3

我正在尝试使用以下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”,如下所示:

无效标签

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

4

3 回答 3

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。

于 2013-04-05T01:56:28.670 回答
1

如果没有更多详细信息并且没有服务器发送的响应,很难清楚地回答。但是看这个,看起来服务器正在返回有效的 JSON;不是 JSONP 包装函数。尝试将其更改dataTypeJSON虽然没有承诺,需要更多信息才能确定

于 2013-04-05T01:45:21.623 回答
0

您的 json 返回值应采用function_name(json_data)格式。
像这样:

return({"status":a,"data":"123456789"})

创建一个函数作为' return '或与json返回值相同的名称。并且有响应时会自动调用返回函数。

 $.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);

}

跳它会正常工作

于 2013-08-30T10:44:35.270 回答