我有一个存储在mongoDB集合中的JSON对象。该对象表示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;
有什么想法吗?我很难过
提前致谢。
答案 0 :(得分:6)
jQuery的getJSON
为您反序列化JSON,因此data
将是对象图,而不是字符串。来自文档:
success
回调传递返回的数据,该数据通常是JSON结构定义的JavaScript对象或数组,并使用$.parseJSON()
方法进行解析。
因为data
已经已经反序列化,所以您不需要或不需要在其上调用JSON.parse
。这样做会隐式调用toString
上的data
,[object Object]
会返回[object Array]
或JSON.parse
,因此data
不会将其视为输入。 :-)直接使用$.getJSON
(
"e4.php",
"",
function(world) // <=== Changed name of argument
{
moveObjects(world); // <=== Used it directly
}
);
:
world
另外:除非你在某个地方宣布var
,否则你的代码也会成为The Horror of Implicit Globals的牺牲品。你可能想要{{1}}。但是通过上面的更改,您根本不需要变量,所以......