0

jQuery.getJSON用来获取一些数据。我有一个名为的对象helpdesk.data.STATUS.MESSAGE.NOTLOGGEDIN,它是在普通脚本标签中创建的。在调用返回的 JSON 中getJSON,我试图引用helpdesk.data.STATUS.MESSAGE.NOTLOGGEDIN. 我正在使用该.done方法来捕获 JSON 并对其进行处理,并.error捕获任何错误。

返回的 JSON 看起来完全有效,但它以 200(OK)状态进入.error函数。

如果我将对对象的引用更改为字符串,它将进入.done方法。有谁知道引用页面中已经存在的对象的方法,该页面触发getJSON来自返回的 JSON 的请求?

返回的 JSON 是:

{"builds": {"status": helpdesk.data.STATUS.FAILURE, "messages": [helpdesk.data.STATUS.MESSAGE.NOTLOGGEDIN]},"details": {"status": helpdesk.data.STATUS.FAILURE, "messages": [helpdesk.data.STATUS.MESSAGE.NOTLOGGEDIN]}}


最终代码:

$.ajax("/helpdesk/resources/js/json/data.json.php", {"data": {"data": "styling-builds,details", "update": "update", "nojson": "nojson"}}).done(function(data) {
    eval("data = " + data);
});
4

1 回答 1

1

总结一下:在 JSON 响应中引用客户端变量显然是不正确的,它会导致 JSON 格式无效(参见http://json.parser.online.fr/)。

我看到的唯一解决方法(如果您真的想在 JSON 中引用现有变量)是将您的响应作为字符串返回并eval在客户端调用它(然后将正确解释变量和函数)。

于 2013-11-13T10:11:06.210 回答