JQuery跨域GET请求不起作用

时间:2014-01-20 16:52:12

标签: javascript jquery json cors

我正在尝试设置一个简单的界面来测试Basecamp API。我已经设置了dataType = jsonp以避免跨域问题。在进行调用时,我可以在检查器中看到响应正在发送回正确格式化的JSON。但是,我的错误警报显示4和200,但响应文本是“未定义”。我假设我没有正确地从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);
        },
    });
}

2 个答案:

答案 0 :(得分:0)

您的URL是针对.json文件的,但JSONP需要一个特殊格式化的JavaScript文件,以将结果传递给您控制的函数(或者,自您使用它以来由jQuery管理)。无论哪种方式,服务器都需要支持JSONP,您不能只是请求JSON文件并将其强制转换为JSONP交互。

答案 1 :(得分:0)

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

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

SomeFunctionName({...});