簡體   English   中英

JSON.parse意外字符

[英]JSON.parse Unexpected character

我在mongoDB集合中存儲了一個JSON對象。 該對象表示5 x圖像,5 y圖像和針孔板圖像的位置。

每隔一段時間,我向該對象響應的php文件發送一個請求,然后我想解析該對象並相應地移動各個部分。

這是我的要求:

$.getJSON
(
    "e4.php",
    "",
    function(data)
    {
        world = JSON.parse(data);
        moveObjects(world);
    }
);

但我得到:JSON.parse:意外字符

當我console.log數據firebug給我正確的對象,所以我知道它正在正確返回。

在e4.php中:

$criteria = array("name" => "world");

$doc = $collection->findOne($criteria);

$conn->close();

print $doc['world'];

其中conn是連接,而collection是我正在使用的集合。

數據庫在e3.php中更新:

$encodedworld = $_REQUEST['data'];

$criteria = array("name" => "world");

$doc = $collection->findOne($criteria);

$doc['world'] = $encodedworld;

$collection->save($doc);

$conn->close();

print $encodedworld;

有任何想法嗎? 我很困惑

提前致謝。

jQuery的getJSON為您反序列化JSON,因此data將是對象圖,而不是字符串。 從文檔中:

success回調將傳遞返回的數據,該數據通常是由JSON結構定義並使用$.parseJSON()方法進行解析的JavaScript對象或數組。

因此,由於data 已經反序列化,因此您不需要或不需要對其調用JSON.parse 這樣做將隱式調用data toString ,這將返回[object Object][object Array] ,因此JSON.parse不喜歡將其作為輸入。 :-)只需直接使用data

$.getJSON
(
    "e4.php",
    "",
    function(world)         // <=== Changed name of argument
    {
        moveObjects(world); // <=== Used it directly
    }
);

另外:除非您聲明未顯示的world否則您的代碼也將成為“隱式全球恐怖”的獵物。 您可能想在那里var 但是有了上面的更改,您根本不需要該變量,所以...

暫無
暫無

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

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