簡體   English   中英

JSON.parse無法運行

[英]JSON.parse doesn't run

我正在嘗試從PHP到Javascript獲取JSON對象。 目前,我的Javascript代碼已包含以下內容:

function GetEvents()
{   
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange  = function()
    {
        if (this.readyState == 4 && this.status == 200) 
        {
            var eventObject = JSON.parse(this.responseText);
            alert("Hello");
        }
    }
    xmlhttp.open("GET", "php/includes/GetEvents.php", true);
    xmlhttp.send();
}

它正在討論的PHP是這樣的:

<?php
include_once 'dbConnect.php';
include_once 'config.php';

class Event
{
     public $eventName;
     public $eventStart;
     public $eventEnd;
}

$prep = "SELECT eventName, eventStart, eventEnd FROM Events ORDER BY eventStart 
DESC";
$statement = $link->prepare($prep);//Prepare Selection from the Database
if($statement)
{
    //Executes SELECT;
    $statement->execute();

    $result = $statement->get_result();
    if ($result->num_rows > 0) 
    {
        $event = new Event;
        while($row = $result->fetch_assoc())
        {
            $event->eventName = $row['eventName'];
            $event->eventStart = $row['eventStart'];
            $event->eventEnd = $row['eventEnd'];

            echo json_encode($event); //Returns the Event object as a JSON      
        }   
    }
}
?>

我遇到的問題是我的JavaScript代碼中的JSON.parse部分似乎沒有實際起作用,或者至少考慮到其下的任何代碼根本無法運行而上面的代碼卻無法運行。 所以我很確定這是導致JSON.parse錯誤的原因,但我不知道可能是什么問題。

有什么幫助嗎?

您在循環的每次迭代中都echo JSON字符串。 因此,最終字符串不是有效的JSON字符串。 您可以創建一個數組來存儲數據,並在流程結束時回顯JSON字符串:

$data = []; // create an array
$statement = $link->prepare($prep);//Prepare Selection from the Database
if($statement)
{
    //Executes SELECT;
    $statement->execute();

    $result = $statement->get_result();
    if ($result->num_rows > 0) 
    {
        $event = new Event;
        while($row = $result->fetch_assoc())
        {
            $event->eventName = $row['eventName'];
            $event->eventStart = $row['eventStart'];
            $event->eventEnd = $row['eventEnd'];

            $data[] = $event; // store data into array
        }   
    }
}
echo json_encode($data); // Returns ALL events as a JSON      

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM