0

jquery migrate を使用して jquery をアップグレードしようとしています。

このコード (jquery.ajax のラッパー) で「JQMIGRATE: Global events are undocumented and deprecated」を取得します。

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  );
};

次の 2 つのケースで、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 に答える