2013-04-05 89 views
3

我尝试使用以下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); 
    }, 
}); 

我得到的数据,我从浏览器期望,但萤火虫口口声声说“语法错误:无效的标签”,如下图所示:

invalid label

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

+0

貌似有效的JSON我,还是我得到'意外标记:'在Chrome中。 – 2013-04-05 01:27:50

+1

查看来自该URL的响应,它以“text/HTML”而不是“test/JSON”的形式出现。尽管你希望jQuery能够应付这一点。 – 2013-04-05 01:40:31

回答

1

如果没有更多的细节和服务器发送的响应,很难清楚地回答。但看着这个,它看起来像服务器返回有效的JSON;不是JSONP包装函数。尝试改变dataTypeJSON(虽然没有答应,就需要更多的信息,以确保

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。

+0

你将如何去回调与回调数据? – ChristopherStrydom 2013-08-27 01:15:47

+0

在服务器端?从字面上看,你把你的JSON字符串,并把它的回调函数名称。因此,不是返回'{“data”:“mydata”}',而是返回'callbackName({“data”:“mydata”})'。 – 2013-08-27 16:06:23

0

你的json返回值的格式应该是function_name(json_data)
这样的:

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

创建的功能为“回报”或者相同的名称与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); 

} 

跳它会正常工作