【问题标题】:SyntaxError: invalid label using jQuery.ajax()SyntaxError:使用 jQuery.ajax() 的标签无效
【发布时间】:2013-08-30 19:11:07
【问题描述】:

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

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

【问题讨论】:

  • 对我来说看起来像是有效的 JSON,但我仍然在 Chrome 中得到 Unexpected token :
  • 查看来自该 URL 的响应,它以 text/HTML 而不是 test/JSON 出现。尽管您希望 jQuery 能够应对这种情况。

标签: jquery ajax jsonp


【解决方案1】:

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 字符串,并在其周围放置回调函数名称。所以,不要返回{"data":"mydata"},而是返回callbackName({"data":"mydata"})
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    您的 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);
    
    }
    

    它会正常工作的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 2015-09-08
      相关资源
      最近更新 更多