0

我知道有人问过这个问题,但我无法让它发挥作用。

我执行以下 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 是:

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

除此Invalid label错误外,一切正常。有没有人有任何想法?

提前谢谢大家

4

1 回答 1

1

可以处理 JSONP 的服务器获取回调参数(可以是不同的参数,具体取决于 WS)并在响应中传递它。所以服务器的响应应该是:

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

如果您无法控制服务器,则唯一的路由是代理。有关绕过同源策略的信息,请参阅我的跨域答案。 是什么阻止我使用 $.ajax 加载另一个域的 html?

于 2013-01-02T19:58:32.330 回答