我正在尝试设置一个简单的界面来测试 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);
},
});
}
最佳答案
您的 URL 适用于 .json
文件,但 JSONP 需要一个经过特殊格式化的 JavaScript 文件,以便将结果传递到您控制的函数中(或者由 jQuery 管理,因为您正在使用它) )。无论哪种方式,服务器都需要支持 JSONP,您不能只请求 JSON 文件并将其强制转换为 JSONP 交互。
关于javascript - JQuery 跨域 GET 请求不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21239702/