我正在尝试使用 ajax 响应作为使用 google charts 绘制图表的函数的参数。
这是JS代码:
data.addRows([['One', 5], ['Two', 2]]);
如您所见,该参数包含几个带有“图表单位”名称及其值的方括号。一切正常。但是,当我将 ajax responseText 作为参数传递时,它根本不起作用。
data.addRows(xmlhttp.responseText);
PHP 代码返回 json_encode($value),其中 $value 变量是这个字符串: [[一, 5], [二, 2]]
所以我得到的结果是:
"[['one', 5], ['two', 2]]"
顺便说一句。我还尝试从 JS 代码中的字符串中删除双引号 - 仍然没有结果。
怎么了? firebug 给了我一些奇怪的错误:给 addRows 的参数必须是数字或数组...
我应该如何解决这个问题?
最佳答案
data.addRows
需要一个真正的 JavaScript 数组,而您正在向它传递一个字符串。为了将字符串转换为数组,您应该使用 JSON 解析器。但是,由于单引号,您从服务器获得的响应不是有效的 JSON。
步骤:
更新您的服务器以发送有效的 JSON 响应,其中包括发送 correct mime type
应用程序/json
。如果您使用像 jQuery 这样可以为您解析 JSON 的 ajax 库,遵循标准会很有帮助。使用类似
JSON.parse(...)
的方法自行解析responseText
或使用 jQuery 等 ajax 库来为您解析。无论哪种方式,您都需要将responseText
字符串转换为真正的 JavaScript 数组。
关于php - 使用 ajax 响应作为函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12988980/