0

私のリクエストajaxは、読み込みのgifを表示する関数を呼び出さないでください。サンプルのajax要求を使用します。私のjsは次のとおりです。

$("#carregar").bind("ajax:loading", function(et, e){
    $(this).hide();
    $("#load_img").show();
});

controller.js.erbのサンプルメソッドを使用してコンテンツをロードしますが、gifが表示されません。何が問題なのですか?ありがとう

4

2 に答える 2

2

ajax:loading古いバージョンのjquery-railsに同梱されていたJSドライバーによってトリガーされたイベントでした。その後、変更されました。より新しいバージョンのRailsを使用している場合は、ajax:beforeSendイベントにバインドする必要があります。

考慮すべきその他の事項:

1)イベントのハンドラーはajax:beforeSend、AJAXリクエストをトリガーした要素(おそらくFORM要素)にバインドする必要があります。

2)jQuery .bind()を使用する場合、ターゲット要素がDOMに存在する必要があります。イベントハンドラーをバインドする前にDOMがロードされていることを確認する簡単な方法は、スクリプトをドキュメント対応コールバックでラップすることです。

$(document).ready(function(){
  $("#carregar").bind(...)
})

3)ajaxStartの使用に関するArunの提案は、ajax読み込みインジケーターを表示および非表示にするのに適しています。

// Show and hide the indicator for every AJAX request.

$(document).ajaxStart(function(){
  $("#load_img").show();
});

$(document).ajaxStop(function(){
  $("#load_img").hide();
});
于 2013-01-16T15:38:13.377 に答える
0

トリガーされるイベントについては、 jQueryのドキュメントを参照してください。

ajax:beforeの代わりにイベントをバインドしてみてくださいajax:loading

于 2013-01-16T09:59:34.927 に答える