0

私はJSONオブジェクトをmongoDBコレクションに保存しています。オブジェクトは、5 x画像、5 y画像、およびtictactoeボード画像の位置を表します。

ある間隔で、このオブジェクトで応答する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;

何か案は?私は困惑しています

前もって感謝します。

4

1 に答える 1

6

jQuerygetJSONはJSONを逆シリアル化するためdata、文字列ではなくオブジェクトグラフになります。ドキュメントから:

コールバックには、返されたデータが渡されます。successこれは通常、JSON構造で定義され、$.parseJSON()メソッドを使用して解析されるJavaScriptオブジェクトまたは配列です。

したがって、すでにdata逆シリアル化されているので、それを呼び出す必要はありません。そうすることで、暗黙的にを呼び出します。これは、またはのいずれかを返すため、入力としては好みません。:-)直接使用してください:JSON.parsetoStringdata[object Object][object Array]JSON.parsedata

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

別に:あなたが見せなかった場所を宣言しない限り、あなたのコードはまた、暗黙のグローバルの恐怖のworld餌食になりました。あなたはおそらくそこにいたかったでしょう。しかし、上記の変更により、変数はまったく必要ないので...var

于 2013-03-26T22:05:49.907 に答える