我正在尝试在我的页面上调试所有jquery请求,但由于某种原因,使用数据类型jsonp的请求不会导致我的全局事件被触发。我无法控制使用jsonp数据类型的ajax请求,所以我需要提出一个不需要更改实际的ajax请求代码的解决方案。然而,我可以对$ .ajax函数/ jquery lib等进行更改。我有一个精简的示例,显示事件未被触发的方式。
$('body').bind("ajaxSend",function() {
alert('global ajaxSend');
});
$.ajax({
type: 'GET',
url: 'http://www.example.com',
dataType: "jsonp",
success : function(result) {alert('success');},
error : function(XMLHttpRequest,textStatus,errorThrown) {alert('error');}
});
在该示例中,未触发ajaxSend事件。有没有人知道会解决它的变通方法或补丁?
答案 0 :(得分:2)
我遇到了同样的问题,我解决了将绑定更改为:
$( document ).ajaxSend(function() {
alert('global ajaxSend');
});
正如这里所解释的那样:
答案 1 :(得分:1)
jsonp请求通过在DOM中插入脚本标记来工作,因此它不会触发错误处理程序,也可能不会触发您的全局ajaxSend处理程序。
没有尝试过,但你总是可以尝试在成功回调中触发事件:
$.ajax({
type: 'GET',
url: 'http://www.example.com',
dataType: "jsonp"
}).done(function() {
$('body').trigger('ajaxSend');
});
答案 2 :(得分:0)
将RegisterGlobalEvents设置为true可能会触发ajaxsend,以防您在控制台中看不到任何其他错误(在ready函数下面添加此权限)
$(document).ready(function(){ var objGlobalEvent = new RegisterGlobalEvents(true,“”); ... .. //其他表单提交代码 });