我在javascript中有一个列表,当用户点击链接或滑动栏时,该列表将被数据库的内容更改。我目前使用xmlhttp请求来获取生成列表的php页面。 我有一个以这种形式工作的静态列表:
var mark_list = [
{ "EntID" : 3, "x" : 100, "y" : 400},
];
我试图让php页面生成{“EntID”:3,“x”:100,“y”:400}并将mark_list设置为等于responseText,但我相信这只是一个字符串。我正在努力寻找一种方法来将这个新列表变成变量。
有没有人有任何建议或解决方案?非常感谢您的帮助。
Kallum
答案 0 :(得分:1)
通过在此处添加json脚本,确保浏览器具有JSON对象:https://github.com/douglascrockford/JSON-js/blob/master/json2.js
如果可用,它将推迟到本机浏览器JSON对象,如果没有,将添加它以便在当前不支持它的浏览器中提供此功能。
然后在您的代码中,在收到PHP脚本的输出后,运行:
var mark_list = JSON.parse(responseText);
根据PHP脚本的输出,您可能需要这样做:
var stuff = JSON.parse(responseText);
var mark_list = [stuff];
这会将PHP返回的JSON字符串转换为实际的javascript对象。
在您的PHP代码中,您可以执行以下操作:
$output = array(
array(
'EntId' => 3,
'x' => 100,
'y' => 400,
),
);
echo json_encode($output);
然后,您可以在JavaScript中使用var mark_list = JSON.parse(responseText);
选项。
答案 1 :(得分:1)
responseText
确实只是一个由字符串表示的文本,所以你现在输出它的方式不仅仅是单独完成这个技巧。基本上有两种方法可以做到这一点:
在您的javascript中,您解析服务器提供给您的输出。这可以用你想做的任何方式在一个纯粹的字符串上完成。例如,您可以编写javascript来解析您使用花括号和基于冒号的语法提供的格式。或者,您可以使用另一种格式(如XML),这将减少工作量,但仍然会在javascript中留下输出的解释。
您可以输出用于描述对象和列表的格式。 JSON将是这种格式的一个很好的例子。如果以JSON输出,您将得到类似于上面使用的格式的东西(JSON代表Javascript Object Notation并且基于javascript语法的一部分),所有你需要做的就是能够使用它获取您想要的数据。您可以在大多数浏览器上使用JSON.parse()
,但是更广泛支持的替代方案是jQuery的jQuery.parseJSON()
(您将使用jQuery,在这种情况下您也应该提供jQuery)