2011-09-13 9 views
0

MVC 3プロジェクトのajaxStartは動作していますが、ajaxStopまたはajaxCompleteでは動作していないようです。 IE9、Mozilla、Chromeでこれをテストしたので、この問題はブラウザ固有ではありません。MVC 3&JQuery - ajaxStopまたはajaxCompleteが起動しない

私のプロジェクトでは、一連の文字を取り、組み合わせ/順列を見つけてユーザーに表示するだけです。 ajax関数が開始され、ajaxStartが起動し、「しばらくお待ちください」インジケータが表示されます。 ajax呼び出しが完了すると(私は仮定します)、表にデータが取り込まれますが、ajaxStop/ajaxCompleteは決して起動されず、「しばらくお待ちください」インジケータが消えません。

$(document).ready(function() { 
    $(document).ajaxStart(function() { 
     $('#ajaxBackground').show(); 
     $('#ajaxProgress').show(); 
    }); 

    $(document).ajaxStop(function() { 
     $('#ajaxBackground').hide(); 
     $('#ajaxProgress').hide(); 
    }); 

    $('#submit').click(function() { 
     var p = $('#prefix').val(); 
     var l = $('#letters').val(); 
     var s = $('#suffix').val(); 

     $.ajax({ 
      url: '@Url.Action("Search", "Home")', 
      type: 'POST', 
      dataType: 'json', 
      data: { prefix: p, letters: l, suffix: s }, 
      success: function (jsonresults) { 
       $('#searchResults').find('tr').remove().end(); 
       for (var i = 0; i <= jsonresults.length; i++) { 
        $('#searchResults').append('<tr><td>' + jsonresults[i].word + '</td><td>' + jsonresults[i].length + '</td><td>' + jsonresults[i].score + '</td></tr>'); 
       } 
      }, 
      error: function() { 
       alert('error'); 
      } 
     }); 
    }); 
}); 

私は逃したものがある:

は、ここで私が使用したJavaScriptです。どんな助けでも大歓迎です。ありがとう。

+1

非常に奇妙です。ほぼ正確にコードをテストし、ajaxStartコールバックとajaxStopコールバックが正しく呼び出されています。 –

+2

あなたはエラーのために火かき棒をチェックしました – Rafay

答えて

2

通常これが有効です。 #submitは、フォーム送信ボタンまたはアンカーのいずれかと思われます。この要素のclickイベントを購読しました。このイベントはAJAXリクエストを発生させます。しかし、関数の最後にreturn falseがなかったので、この要素のデフォルトアクションをキャンセルしません。だからあなたのAJAXリクエストはtrigerredされ、ブラウザはリダイレクトされ、このAJAXリクエストの処理を終了する時間はありません。

したがって、$.ajax関数の直後にfalseを返すようにしてください。

+0

私は同様の問題を抱えていますが、ここで述べたようにポストバックはありません - http://stackoverflow.com/questions/25745682/jquery-ajax-stop-is-not-invoked-no-エラー-200-ok – Lijo

関連する問題