2013-01-02 59 views
0

我知道这个问题已被问到,但我不能得到它的工作。JQuery AJAX JSONP无效标签

我执行下面的AJAX请求:

function dislikeMeme(memeId) { 
    $.ajax({ 
     dataType: "jsonp", 
     url: "http://<url>.com/dislike/" + memeId, 
     data: { 
      u: "username", 
      p: "password" 
     }, 
     jsonpCallback: 'successCallback' 
    }); 
} 

function successCallback(data) { 
    alert("Test"); // Not firing because of previous 'Invalid label' error 
}; 

看萤火我看到该请求是成功的,但是有一个Invalid Label错误的时候触发请求的错误回调。请求的响应如下:

{ 
    "id":6220673, 
    "myScore":-1, 
    "msg":"Not loved" 
} 

我看到括号导致JavaScript来解释响应为对象,但我知道这是我检索格式,是不是有反正解析这之前它会导致错误?

我也看到,返回此信息的页面的URL是:除了这Invalid label错误

http://<url>.com/dislike/123456?callback=successCallback&u=username&p=password&_123456789 

一切都可以正常使用。有没有人有任何想法?

预先感谢大家

+1

您的JSON不是JSONP。如果它不是JSONP,如果它是跨域而不是CORS,则无法处理它。 –

+0

@KevinB我正在使用JSONP来获得这个跨域的工作。服务器发送正确的回调,但也返回JSON。我只是想停止无效的标签错误。 – Cristian

+0

要停止无效标签错误,只有传入回调参数时,服务器才返回JSONP。如果您的''callback = successCallback''看起来应该看起来像'successCallback({“foo”:“bar”}) –

回答

1

,可以处理JSONP取回调paramater的服务器(可以是不同的参数取决于WS)并将其传递在响应中。因此,服务器的响应应该是:

successCallback({ 
"id":6220673, 
"myScore":-1, 
"msg":"Not loved" 
}) 

如果您无法控制服务器,则您的唯一路由是代理服务器。查看我的跨域回答,获取有关绕过同一原产地政策的信息。 What prevents me from using $.ajax to load another domain's html?