0

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

我们不知道如何解决它?!

4

1 回答 1

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

于 2014-02-21T13:01:53.900 回答