php - 使用 ajax 响应作为函数的参数

标签 php javascript ajax google-visualization

我正在尝试使用 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。

步骤:

  1. 更新您的服务器以发送有效的 JSON 响应,其中包括发送 correct mime type 应用程序/json。如果您使用像 jQuery 这样可以为您解析 JSON 的 ajax 库,遵循标准会很有帮助。

  2. 使用类似 JSON.parse(...) 的方法自行解析 responseText 或使用 jQuery 等 ajax 库来为您解析。无论哪种方式,您都需要将 responseText 字符串转换为真正的 JavaScript 数组。

关于php - 使用 ajax 响应作为函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12988980/

相关文章:

javascript - 当在 AJAX、Jquery 中使用 GET 更新数据库时,如何反射(reflect)表上的更新

javascript - 如何在使用 PHP 插入数据库之前检查任何输入值是否有数据?

php - 删除多个复选框上的行后未获取 $_GET 的值?

php - 右键单击时更改图像路径 "save image as"

javascript - 我在哪里可以找到好的 D3 事件和调度示例?

javascript - AngularJS 应用程序为多个 Controller 加载和处理一次 JSON 数据

javascript - UpdatePanel 忽略内联脚本标记

php - 从 MySQL 填充两列 HTML

php - 从电子邮件标题转换数据

javascript - 在文本字段中突出显示实时语法?