【问题标题】:jQuery getJSON - reference pre-existing objectjQuery getJSON - 引用预先存在的对象
【发布时间】:2013-11-13 09:42:50
【问题描述】:

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

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

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

返回的 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);
});

【问题讨论】:

  • 请注意,您的 JSON 无效(尝试将其复制/粘贴到 json.parser.online.fr
  • 我引用的对象有 4 个错误。我正在尝试做的是在调用 getJSON 之前引用页面中已经存在的对象。
  • 嗯,也许使用 $.post(或 $.ajax)并将 dataType 设置为 json,然后使用 JSON.parse 或类似的东西就可以了。
  • 我认为在 JSON 响应中引用变量是不正确的
  • 好的,但问题是如果我们能够实现这一点会更好,因为所有可能的错误都已经存储在一个对象中。我会尝试 $.post 方法,看看我是否可以使用它

标签: javascript jquery json getjson


【解决方案1】:

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

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

【讨论】:

  • 谢谢。有关最终代码,请参阅更新后的帖子。它现在工作得很好:)。连同全局错误处理(将通过另一个 ajax 调用在数据库中记录错误),这将非常强大!
猜你喜欢
  • 2015-08-14
  • 1970-01-01
  • 2011-09-05
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 1970-01-01
  • 2021-08-02
相关资源
最近更新 更多