【发布时间】:2011-09-28 06:50:11
【问题描述】:
我需要通过跨域 XMLHttpRequest 检索数据。为了在(几乎)所有浏览器中实现这一点,我首先使用原生 XHR,如果失败,则使用 flXHR。
我目前拥有的(工作)代码如下:
jQuery.support.cors = true; // must set this for IE to work
$.ajax({
url: 'http://site.com/dataToGet',
transport : 'xhr',
success: function(data) {
console.log('Got data via XHR');
doStuff(data);
},
error: function(xhr, textStatus, error) {
console.log('Error in xhr:', error.message);
console.log('Trying flXHR...');
$.ajax({
url: 'http://site.com/dataToGet',
transport : 'flXHRproxy',
success: function (data) {
console.log('Got data via flXHR');
doStuff(data);
},
error: function (xhr, textStatus, error) {
console.log('Error in flXHR:', error.message);
console.log('Both methods failed, data not retrieved.');
}
});
}
});
这对我来说感觉像是很多代码重复,尤其是在成功处理程序中。有没有更有效的方法来做到这一点?我真的更愿意进行一次 $.ajax 调用,轮流尝试两种传输,而不是必须使用错误处理程序来进行第二次调用。在这个例子中并不算太糟糕,但是如果成功处理程序更长或者如果成功处理程序必须自己发出另一个 $.ajax 调用,则会迅速变得更加复杂。
【问题讨论】:
标签: ajax jquery error-handling cross-domain