如何访问从JSONP GET请求返回的数据?

时间:2017-05-23 11:55:11

标签: javascript jquery json ajax

我需要提出跨域请求并提供Cookie /凭据才能访问其他域。我在Jquery中使用JSONP来实现这一目标。我的测试已经成功,因为我可以看到请求在Chrome的开发人员工具的“网络”标签中返回200。

问题是我收到一条错误,指出没有调用Callback函数。我理解这意味着远程服务器没有响应回调函数。但是,这是预期的,因为服务器没有实现JSONP,我只是尝试使用JSONP从我不拥有/控制的域中获取数据。

我的问题是,因为我得到200,有没有办法访问数据?即使我必须在错误函数中这样做?

这是我的代码:

$.ajax({
    xhrFields: {
        withCredentials: true
    },
    dataType: 'jsonp',
    jsonp: false,
    cache: true,
    type: "GET",
    timeout: 5000,
    url: "https://remote.domain.com/path/search",
     data: 'keyword=ramy-testing',
    success: function(data, textStatus, XMLHttpRequest){
        console.log('Error: ' + textStatus);
    },
    error:function (xhr, ajaxOptions, thrownError){
        alert(xhr.status);       //displays "200" in alert window
        alert(xhr.statusText);   //displays "success" in alert window
        alert(xhr.responseText); //displays "undefined" in alert window
        alert(thrownError);      //displays "Error: [callback name] was not called"
    }
} );

1 个答案:

答案 0 :(得分:0)

这无法完成。

服务器的响应不是JSONP,它只是JSON对象。回调没有被调用(因为它不存在)并且响应失败。

如果远程服务器不允许,则无法绕过同源策略。