JQMIGRATE:全局事件未记录且已弃用

时间:2014-02-21 10:09:01

标签: javascript jquery jquery-migrate

我们正在尝试使用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);

我们不确定如何修复它?!

1 个答案:

答案 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 的实现。