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

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

标签无效

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

必须以以下格式返回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即可。

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

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

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

使用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); } 

跳它会工作正常