我们正在尝试使用jquery migrate升级我们的jquery。
我们在此代码(jquery.ajax的包装器)上获得“JQMIGRATE:全局事件未记录且已弃用”:
ajaxPost: function (url, jsonData, successCallback, async) {
if (async == null) {
async = true;
}
var ajaxSettings = {
url: url,
type: 'POST',
async: async,
data: JSON.stringify(jsonData),
contentType: 'application/json; charset=UTF-8',
success: function (data, code, xht) {
successCallback(data, code, xht);
},
error: function (xht, errorType, exception) {
console.log(...);
}
};
$.ajax(ajaxSettings);
}
此行发生“错误”:
successCallback(data, code, xht);
我们不确定如何修复它?!
答案 0 :(得分:1)
这是来自JQMIGRATE的一段代码,负责警告
// Turn global events into document-triggered events
jQuery.event.trigger = function( event, data, elem, onlyHandlers ){
if ( !elem && !rajaxEvent.test( event ) ) {
migrateWarn( "Global events are undocumented and deprecated" );
}
return eventTrigger.call( this, event, data, elem || document, onlyHandlers );
};
在两种情况下,看起来这个警告会在trigger()调用中弹出:
1)没有将元素指定为触发上下文
2)事件是全局ajax事件
全球ajax事件示例:
$(document).bind("ajaxSend", function(){
$("#loading").show();
}).bind("ajaxComplete", function(){
$("#loading").hide();
});
但是如果你说你通过设置jQuery.ajaxSetup({global:false})禁用了全局事件,那么 问题可能是由案例1造成的,但我没有看到任何代码在提供的片段中重新出现。
对于案例1,您可能需要检查方法 successCallback 的实现。