【问题标题】:getJSON callback not executinggetJSON 回调未执行
【发布时间】:2015-02-06 20:53:04
【问题描述】:

我需要做一个跨域请求,getJSON有问题。

$.getJSON("http://usr:pwd@10.0.1.xx/cgi-bin/remote/request.cgi?m=json&r=grp&fn=getvalue&alias=1/3/51&callback=?",
        function(result) {
            alert('hi');
        });

回调没有触发,即我没有收到警报。如果我将 http:// 链接粘贴到浏览器窗口中,我会得到想要的结果。它是一个普通数字,在本例中为 2。我还可以将请求设置为 xml,在这种情况下,浏览器窗口中的结果是 <value>2</value>。如果有人能告诉我我的 getJSON 出了什么问题,那就太好了。

非常感谢和最好的问候

【问题讨论】:

  • 你是否包含了 ajax 脚本?
  • 当你说如果你把这个链接粘贴到你的浏览器中你会得到想要的结果,你能在这里显示这个结果吗?你得到一个有效的 JSONP 响应吗?另外,在浏览器中粘贴 url 时,不要忘记将回调参数中的 ? 替换为有意义的函数名。
  • 达林,浏览器中的结果是一个简单的数字,本例是2。源代码显示的是纯数字,没有别的。
  • 链上fail 方法,看看错误是什么
  • Ramesh,很遗憾我不能跟上。

标签: javascript jquery json getjson


【解决方案1】:

您的 JSON 可能有问题。这取自文档。

重要提示:从 jQuery 1.4 开始,如果 JSON 文件包含语法错误, 请求通常会静默失败。避免频繁的手工编辑 出于这个原因的 JSON 数据。 JSON 是一种数据交换格式 比 JavaScript 对象更严格的语法规则 字面符号。例如,所有用 JSON 表示的字符串, 无论它们是属性还是值,都必须包含在 双引号。有关 JSON 格式的详细信息,请参阅http://json.org/

来源:

http://api.jquery.com/jquery.getjson/

为了更好地控制错误处理,请使用$.ajax

您可以在此处查看您的 JSON http://jsonlint.com/

【讨论】:

    【解决方案2】:

    您尝试调用的远程端点似乎不支持 JSONP 或 CORS。这可以在浏览器的控制台输出中看到,也可以通过直接粘贴 url 并将 &callback=? 参数替换为 &callback=somevalue 来看到。

    为了能够进行跨域 AJAX 调用,远程端点必须支持 CORS 或 JSONP。如果您希望能够通过 AJAX 使用它们,您可能应该联系此端点的作者以启用其中之一。

    【讨论】:

      猜你喜欢
      • 2011-08-22
      • 1970-01-01
      • 2015-11-12
      • 2012-09-01
      • 2011-01-31
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多