1

jQueryには、いくつかの一般的なajaxイベントに識別子を追加する賢い/簡単な方法がありますか?

説明するために、私は2つの別々の機能(モジュールAとモジュールB)に分割されるいくつかの機能を作成しています。モジュールAは、他のいくつかのものとともに、主にajax呼び出しを担当します。モジュールBは、モジュールaが終了し、ajax呼び出しが返された後、フロントエンドのdom作業を担当します。

私は現在、ajax関数ごとにイベントをトリガーしているだけです。

  • beforeSend
  • 成功
  • 完了
  • エラー

したがって、モジュールには次のコードがあります(他のものの中でも):

 $.ajax({
    url: 'myajaxurl',
    beforeSend : function() {
        $('#form').trigger('module_a_before_send');
    },
    success: function(response) {
       $('#form').trigger('module_a_success');
    },
    complete: function() {
        $('#form').trigger('module_a_complete');
    },
    error: function(textStatus) {
        $('#form').trigger('module_a_error');
    },
    timeout: 3000
});
4

2 に答える 2

0

dataオプションを使用して値をサーバー側に送信し、ajax呼び出しを識別できます。

var data = if some event ? attach some value : if not attach other value etc,
    elem = $('#form');
$.ajax({
    url: 'myajaxurl',
    data: data,
    beforeSend : function() {
        elem.trigger('module_a_before_send');
    },
    success: function(response) {
       elem.trigger('module_a_success');
    },
    complete: function() {
        elem.trigger('module_a_complete');
    },
    error: function(textStatus) {
        elem.trigger('module_a_error');
    },
    timeout: 3000
});

データを取得する方法は、使用するサーバー側の言語によって異なりますが、PHPのようなものの場合は$_POSTグローバルになります。

于 2012-08-04T19:38:01.390 に答える
0

私はその問題について少し混乱しています。モジュール間の通信が必要な場合は、トリガーに渡すことができる追加のデータパラメーターを使用できます(http://api.jquery.com/trigger/を参照) 。

$(elem).trigger('my-custom-event', {id:1})

および対応するイベントハンドラ

$(elem).bind('my-custom-event', function(event, data) {});

別の方法は、独自のカスタムイベントを作成することです

var event = $.Event('my-custom-event',{id:1})
$(elem).trigger(event)

このようにして、マップからjQueryイベントオブジェクトにプロパティを直接追加します。

于 2012-08-04T19:46:25.567 に答える