SyntaxError:使用jQuery.ajax()的无效标签

siv*_*udh 3 ajax jquery jsonp

我正在尝试使用以下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);
    },
});
Run Code Online (Sandbox Code Playgroud)

我从浏览器中获取了我期望的数据,但Firebug一直说"SyntaxError:invalid label",如下所示:

标签无效

所以,让我感到困惑的是调用错误回调而不是成功的原因.我想知道我在这里做错了什么.

Jef*_*f B 7

必须以以下格式返回JSONP数据:callback( jsonObject ).这就是你收到invalid label错误的原因.它期待一个函数,而不是一个JSON对象.您需要修改服务器代码以使用回调函数的名称包装返回值.当您请求JSONP时,jQuery会自动将名称添加到请求中.如果您观看请求,您应该看到如下内容:

http://iceworld.sls-atl.com/api/&cmd=time?callback=jQuery191035087670385837555_1365126604422&_=1365126604423
Run Code Online (Sandbox Code Playgroud)

您的脚本需要获取callback参数并使用它来包装数据,因此对于此示例,它将如下所示:

jQuery191035087670385837555_1365126604422({"status":1,"data":"1365126534"})
Run Code Online (Sandbox Code Playgroud)

如果您从同一个源访问服务器,则可以简单地使用JSON.