在尝试将stackoverflow api与ajax和jquery一起使用时,我无法让它工作。我知道我必须使用jsonp
作为数据类型,并且我一直在阅读不同的方式来执行 jsonp 请求,但我仍然无法让它工作。
这是我的ajax请求:
var API_KEY = "XXXXXXXXXXXX";
var URL = "http://api.stackoverflow.com/1.1/";
var _url = URL + 'users?filter=locrizak';
$.ajax({
dataType:'jsonp',
jsonp : false,
jsonpCallback : "onJsonp",
url: _url,
success: function(val) {
console.log('success');
//console.log(val);
},
error: function(val) {
console.log('error');
console.log(arguments);
}
});
function onJsonp() {
console.log(arguments);
};
无论我尝试什么,我总是在萤火虫中得到这个响应:
"parsererror" "onJsonp was not called"
我知道我在做一些非常愚蠢的事情,因为我在尝试使用 Twitter api 时遇到了同样的问题,但我一生都记不起我做了什么来让它工作。
更新
因此,我查看了 @genesis 的工作演示,并尝试了几次不同的方式,但没有运气。然后我注意到我的 jQuery 版本并将其切换到他正在使用的版本,它神奇地工作。
我将最新版本更改
http://code.jquery.com/jquery-1.6.2.min.js
为
http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js
嗯,不知道它为什么会起作用,可能是一个错误,但谁知道可能还有其他变化。
如果有人知道如果你能解释一下为什么会很棒。我也意识到 jQuery 会自动添加回调,但我无法让它像那样工作。我该怎么做才能让这个工作,我想你会说一个“更合适”的方式?
var URL = "http://api.stackoverflow.com/1.1/";
api.get(URL + 'users?filter=locrizak');
api.get = function(url) {
$.ajax({
/*dataType:'jsonp',*/
dataType:'json',
jsonp : false,
url: url + '&jsonp=api.onJsonp',
success: function(val) {
console.log('success');
//console.log(val);
},
error: function(val) {
//error gets called but.......
console.log(arguments);
console.log('error');
console.log(val);
}
});
};
api.onJsonp = function() {
//so does the callback!!
console.log('called');
console.log(arguments);
}
//note this code is simplified