我正在尝试建立一个简单的接口来测试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);
},
});
}
您的URL用于.json
文件,但是JSONP需要一个经过特殊格式设置的JavaScript文件,才能将结果传递到您控制的功能中(或由于使用而由jQuery管理)。无论哪种方式,服务器都需要支持JSONP,您不能只请求JSON文件并将其强制为JSONP交互。
服务器端,需要使用函数调用包装jason数据。函数名称在URL中以“ ?callback =?”的形式传递。
因此,您不仅需要从服务器返回json对象{...}
,还需要返回
SomeFunctionName({...});