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

时间:2013-04-05 01:23:05

标签: jquery ajax 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);
    },
});

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

invalid label

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

3 个答案:

答案 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);

}

跳它会正常工作