$.getJSON("http://www.geoplugin.net/json.gp?ip=117.201.92.17",function(data){alert(data);});
此代码运行良好,但 url 的响应为空。但是,如果我通过复制粘贴 URL 来访问相同的 URL,它就可以工作。任何想法为什么?
$.getJSON("http://www.geoplugin.net/json.gp?ip=117.201.92.17",function(data){alert(data);});
此代码运行良好,但 url 的响应为空。但是,如果我通过复制粘贴 URL 来访问相同的 URL,它就可以工作。任何想法为什么?
根据此页面(链接):
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/>'); } );
所以我添加了它并在这里创建了一个小提琴(链接)来展示它的工作原理。
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 请求受制于同源策略;请求无法从不同的域、子域或协议成功检索数据。