我正在尝试使用以下 jQuery 调用对我的服务器进行Ajax调用:
$.ajax({
type: "GET",
dataType: "jsonp",
url: "http://iceworld.sls-atl.com/api/&cmd=time",
success: function (data) {
console.log("success");
console.log(data);
},
error: function (error) {
console.log("error");
console.log(error);
},
});
我从浏览器中获取了我期望的数据,但Firebug一直说“SyntaxError:invalid label”,如下所示:
所以,令我困惑的是调用错误回调而不是成功的原因。我想知道我在这里做错了什么。
答案 0 :(得分:7)
JSONP数据必须以以下格式返回:callback( jsonObject )
。这就是您收到invalid label
错误的原因。它期待一个函数,而不是一个JSON对象。您需要修改服务器代码以使用回调函数的名称包装返回值。当您请求JSONP时,jQuery会自动将名称添加到请求中。如果您观看请求,您应该看到如下内容:
http://iceworld.sls-atl.com/api/&cmd=time?callback=jQuery191035087670385837555_1365126604422&_=1365126604423
您的脚本需要使用callback
参数并使用它来包装数据,因此对于此示例,它将如下所示:
jQuery191035087670385837555_1365126604422({"status":1,"data":"1365126534"})
如果您从同一个来源访问服务器,则可以改为使用JSON。
答案 1 :(得分:1)
如果没有更多详细信息且没有服务器发送的响应,很难清楚地回答。但看看这个,看起来服务器正在返回有效的JSON;不是JSONP包装函数。尝试将dataType
更改为JSON
(没有承诺,但需要更多信息以确保)
答案 2 :(得分:0)
您的json返回值应采用 function_name(json_data)格式。
像这样:
return({"status":a,"data":"123456789"})
创建一个函数' return '或同名的json返回值。当有响应时,将自动调用 return 函数。
$.ajax(
{
type: "GET",
dataType: "jsonp",
url: "http://iceworld.sls-atl.com/api/&cmd=time",
error: function(error)
{
console.log("error");
console.log(error);
},
} );
function return()
{
console.log(data);
}
跳它会正常工作