1

我正在尝试使用 ajax 响应作为使用谷歌图表绘制图表的函数的参数。

这是JS代码:

data.addRows([['One', 5], ['Two', 2]]);

如您所见,该参数包含几个方括号,其中包含“图表的单位”名称及其值。一切正常。但是,当我将 ajax responseText 作为参数传递时,它根本不起作用。

data.addRows(xmlhttp.responseText);

PHP 代码返回 json_encode($value),其中 $value 变量是这个字符串:[[one, 5], [two, 2]]

所以我得到的结果是:

"[['one', 5], ['two', 2]]"

顺便提一句。我还尝试从 JS 代码中的字符串中删除双引号 - 仍然没有结果。

怎么了?萤火虫给了我一些奇怪的错误:给 addRows 的参数必须是数字或数组......

我应该如何解决这个问题?

4

2 回答 2

3

data.addRows期待一个真正的 JavaScript 数组,而您正在向它传递一个字符串。为了将字符串转换为数组,您应该使用 JSON 解析器。但是,由于单引号,您从服务器获得的响应不是有效的 JSON。

脚步:

  1. 更新您的服务器以发送有效的 JSON 响应,其中包括发送正确的 mime 类型 application/json。如果您使用像 jQuery 这样可以为您进行 JSON 解析的 ajax 库,那么遵循标准会很有帮助。

  2. 使用类似的东西解析responseText自己JSON.parse(...)或使用像 jQuery 这样的 ajax 库来为你做这件事。无论哪种方式,您都需要将responseText字符串转换为真正的 JavaScript 数组。

于 2012-10-20T16:06:40.440 回答
1

你应该可以做到data.addRows(JSON.parse(xmlhttp.responseText));。但是,单引号会给您带来问题,因此您需要以某种方式告诉 PHP 使用双引号作为键。

可以执行类似data.addRows(JSON.parse(xmlhttp.responseText.replace(/'/, "\"")));` 的操作,但最好确保 PHP 使用正确的引号。

于 2012-10-20T15:52:55.123 回答