我正在向API(instapaper)发送ajax请求,我已经能够成功发出请求,即我已成功发送到instapaper的链接并收到了正确的状态代码 - 201。 但是,将调用错误回调函数而不是成功函数。我认为这是因为我设置了我的请求的方式。例如。它希望以不同的格式进行响应。
请求功能:
$("#instapaper").click(function() {
$.ajax({
type: 'GET',
dataType: 'jsonp',
url:'http://www.instapaper.com/api/add',
data: {"url": ref , "username": "<%= current_user.instapaper_user %>", "password": "<%= current_user.instapaper_pass %>" },
context: document.body,
error: function() {
alert('There was an error!');
},
success: function() {
alert('Page sent');
},
})
});
我已经尝试使用代码201的状态代码回调,但这也不起作用。 任何帮助表示赞赏。
答案 0 :(得分:1)
看起来instapaper API将jsonp
作为回调函数名称,但jQuery中的默认值为callback
。
我建议您将jsonp: 'jsonp'
添加到您的ajax对象中,看看它是否有效:
$.ajax({
type: 'GET',
dataType: 'jsonp',
url:'http://www.instapaper.com/api/add',
data: {"url": ref , "username": "<%= current_user.instapaper_user %>", "password": "<%= current_user.instapaper_pass %>" },
context: document.body,
error: function() {
alert('There was an error!');
},
success: function() {
alert('Page sent');
},
jsonp: 'jsonp'
});
答案 1 :(得分:0)
Per this discussion,如果您打算直接尝试处理状态代码,我认为您需要删除您的成功功能。
您是否尝试使用以下状态码选项:
statusCode: {
200:function() { alert("200"); },
201:function() { alert("201"); }
}
答案 2 :(得分:0)
根据instapaper doco,指定jsonp回调的参数应该被称为“jsonp”,而jQuery默认为“回调”。您可以通过指定“jsonp”选项来覆盖它:
$("#instapaper").click(function() {
$.ajax({
type: 'GET',
dataType: 'jsonp',
jsonp : 'jsonp', // <---------------------NEW BIT HERE
url:'http://www.instapaper.com/api/add',
data: {"url": ref , "username": "<%= current_user.instapaper_user %>", "password": "<%= current_user.instapaper_pass %>" },
context: document.body,
error: function() {
alert('There was an error!');
},
success: function() {
alert('Page sent');
},
})
});
有关详细信息,请参阅jQuery doco。