0
$.getJSON("http://www.geoplugin.net/json.gp?ip=117.201.92.17",function(data){alert(data);});

此代码运行良好,但 url 的响应为空。但是,如果我通过复制粘贴 URL 来访问相同的 URL,它就可以工作。任何想法为什么?

4

2 回答 2

3

根据此页面(链接)

AJAX 和错误:标签无效

例如,如果您使用 jQuery 对 JSON Web 服务进行 AJAX 调用,您可能会看到 Javascript 错误 Error: Invalid label 要消除此错误,请标记 jsoncallback=? 对任何 JSON Web 服务进行 jQuery Ajax 调用时,例如

$.getJSON("http://www.geoplugin.net/json.gp?jsoncallback=?",
function (data) {
  for (var i in data) {
      document.write('data["i"] = ' + i + '<br/>');
  }
);

所以我添加了它并在这里创建了一个小提琴(链接)来展示它的工作原理。

于 2011-01-21T16:59:22.260 回答
0

http://api.jquery.com/jQuery.getJSON/状态的文档:

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

数据是否以有效的 JSON 格式返回?为什么不尝试其他方法:

$.ajax({
  url: url,
  dataType: 'json',
  data: data,
  success: callback
});

这样,您可以删除 json dataType 并确保调用正在返回任何数据,无论是否为 json。

还要记住,由于浏览器的安全限制,ajax 请求受制于同源策略;请求无法从不同的域、子域或协议成功检索数据。

于 2011-01-21T16:56:17.783 回答