JQuery跨域GET请求不起作用

问题描述 投票:1回答:2

我正在尝试建立一个简单的接口来测试Basecamp API。我已将我的dataType = jsonp设置为避免跨域问题。进行呼叫时,我可以在检查器中看到响应正在发送回正确格式的JSON。但是我的错误警报显示4和200,但是响应文本为'undefined'。我假设我没有正确地从jsonp转换为json,但是我是否需要给出我想要的响应?还是我没有正确访问响应。

代码:

function findAllProjects() {
    console.log('findAllProjects');
    $.ajax({
        type: 'GET',
        url: rootURL + "projects.json",
        username: "username",
        password: "password",
        crossDomain: true,
        //contentType: "application/json",
        dataType: "jsonp", // data type of response

        success: function(data) {
            alert(data[0].id);
            console.log("Success function!");
            console.log(data);
        },

        error: function(xhr, err) {
            //alert("Error!");
            alert("readyState: "+ xhr.readyState+"\nstatus: "+ xhr.status);
            alert("responseText: "+ xhr.responseText);
        },
    });
}
javascript jquery json jsonp
2个回答
0
投票

您的URL用于.json文件,但是JSONP需要一个经过特殊格式设置的JavaScript文件,才能将结果传递到您控制的功能中(或由于使用而由jQuery管理)。无论哪种方式,服务器都需要支持JSONP,您不能只请求JSON文件并将其强制为JSONP交互。


0
投票

服务器端,需要使用函数调用包装jason数据。函数名称在URL中以“ ?callback =?”的形式传递。

因此,您不仅需要从服务器返回json对象{...},还需要返回

SomeFunctionName({...});
© www.soinside.com 2019 - 2024. All rights reserved.