将php或xmlhttp.responseText中的列表传递给javascript

时间:2012-04-20 21:37:55

标签: php javascript arrays list xmlhttprequest

我在javascript中有一个列表,当用户点击链接或滑动栏时,该列表将被数据库的内容更改。我目前使用xmlhttp请求来获取生成列表的php页面。 我有一个以这种形式工作的静态列表:

var mark_list = [
{ "EntID" : 3, "x" : 100, "y" : 400},
];

我试图让php页面生成{“EntID”:3,“x”:100,“y”:400}并将mark_list设置为等于responseText,但我相信这只是一个字符串。我正在努力寻找一种方法来将这个新列表变成变量。

有没有人有任何建议或解决方案?非常感谢您的帮助。

Kallum

2 个答案:

答案 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)

    < / LI>