当我使用$ .ajax调用(在跨域调用上)时,我无法获取jQuery的ajaxError全局处理程序。有没有办法让它开火?
我收录了一个快速&下面的脏测试(改编自So how does $.ajaxError work?)。实际上,即使我明确地将global设置为true,也没有全局ajax事件触发。如果我将$ .ajax转换为$('result')。加载它工作正常,但这不是我想要的。
<!DOCTYPE html>
<html lang="en">
<head>
<title>jQuery Sandbox</title>
</head>
<body>
<div class="trigger">Trigger</div>
<div class="result"></div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$(document).ajaxError(function (e, xhr, settings, exception) {
alert(I broke);
});
$('.trigger').click(function () {
$.ajax({
type: "GET",
global: true,
url: 'http://localhost/error',
success: function(data){
alert('ftw');
},
dataType: "jsonp",
});
});
});
</script>
</body>
</html>
感谢您的帮助。
答案 0 :(得分:0)
请阅读jQuery ajax
某些类型的Ajax请求,例如 JSONP和跨域GET请求, 不要使用XHR;在那些情况下 XMLHttpRequest和textStatus 传递给回调的参数是 未定义。
最好使用 curl 进行跨域调用