2

ページ上のすべてのjqueryリクエストをデバッグしようとしていますが、何らかの理由で、データ型jsonpのリクエストによってグローバルイベントが発生していません。jsonpデータ型を使用しているajaxリクエストを制御できないため、実際のajaxリクエストコードを変更する必要のないソリューションを考え出す必要があります。ただし、$。ajax関数/jquerylibなどに変更を加えることはできます。イベントがトリガーされていないことを示す簡略化された例があります。

$('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イベントはトリガーされません。誰かがそれを発火させる回避策またはパッチを知っていますか?

4

3 に答える 3

2

私は同じ問題に直面していて、バインドを次のように変更して解決しました。

$( document ).ajaxSend(function() {
    alert('global ajaxSend');
});

ここで説明されているように:

api.jquery.com/ajaxsend/

于 2014-08-18T18:52:24.457 に答える
1

jsonpリクエストはDOMにスクリプトタグを挿入することで機能するため、エラーハンドラーは発生せず、グローバルなajaxSendハンドラーも発生しない可能性があります。

試したことはありませんが、成功コールバックでイベントをトリガーすることをいつでも試すことができます。

$.ajax({
    type: 'GET',
    url: 'http://www.example.com',
    dataType: "jsonp"
}).done(function() {
    $('body').trigger('ajaxSend');
});
于 2012-11-03T02:58:06.183 に答える
0

RegisterGlobalEventsをtrueに設定すると、コンソールに他のエラーが表示されない場合にajaxsendを起動できます(ready関数のすぐ下にこれを追加してください)

$(document).ready(function(){var objGlobalEvent = new RegisterGlobalEvents(true、 ""); ... .. //他のフォーム送信コード});

于 2020-02-28T17:05:59.027 に答える