1

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

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

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

有没有人有任何建议或解决方案?您的帮助将不胜感激。

卡勒姆

4

2 回答 2

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);

然后,您可以var mark_list = JSON.parse(responseText);在 JavaScript 中使用该选项。

于 2012-04-20T21:43:02.380 回答
1

responseText确实只是一个由字符串表示的文本,所以你现在输出它的方式不会仅仅靠它自己来完成。基本上有两种方法可以做到这一点:

  • 在您的 javascript 中,您解析服务器提供给您的输出。这可以在纯字符串上以您喜欢的任何方式完成。例如,您可以编写 javascript 来解析您使用花括号和基于冒号的语法给出的格式。或者,您可以使用另一种格式(如 XML),这会稍微减少工作量,但仍会将输出的解释留给您在 javascript 中完成。

  • 您可以输出为用于描述对象和列表的格式。JSON 将是这种格式的一个很好的例子。如果您以 JSON 格式输出,您将得到类似于您在上面使用的格式(JSON 代表 Javascript Object Notation,它基于 javascript 的部分语法),您需要做的就是能够使用它获取您想要获取的数据。您可以JSON.parse()在大多数浏览器上使用它,但更广泛支持的替代方案是 jQuery jQuery.parseJSON()(您将使用 jQuery,在这种情况下您也应该提供)

于 2012-04-20T21:50:56.620 回答