我正在尝试设置一个简单的界面来测试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);
},
});
}
答案 0 :(得分:0)
您的URL是针对.json
文件的,但JSONP需要一个特殊格式化的JavaScript文件,以将结果传递给您控制的函数(或者,自您使用它以来由jQuery管理)。无论哪种方式,服务器都需要支持JSONP,您不能只是请求JSON文件并将其强制转换为JSONP交互。
答案 1 :(得分:0)
服务器端,需要用函数调用包装jason数据。函数的名称在URL中传递为“?callback =?”。
因此,您不需要从服务器返回json对象{...}
,而是需要返回
SomeFunctionName({...});