2011-09-13 25 views
0

這似乎是我的MVC 3項目中的ajaxStart工作,但不是ajaxStop或ajaxComplete。問題不在於瀏覽器的具體情況,因爲我在IE9,Mozilla和Chrome中測試了這個問題。MVC 3&JQuery - ajaxStop或ajaxComplete沒有射擊

我的項目只是採取一系列字母,並找到組合/排列,並顯示給用戶。 ajax函數被啓動,ajaxStart被觸發並且出現「please wait」指示符。當ajax調用完成時(我會假設)該表已填充,但ajaxStop/ajaxComplete永遠不會被觸發,「請稍候」指示符永遠不會消失。

這是我使用的JavaScript:

$(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'); 
      } 
     }); 
    }); 
}); 

有什麼我錯過了。任何幫助將不勝感激。謝謝。

+1

這很奇怪。我幾乎精確地測試了您的代碼,正確調用了ajaxStart和ajaxStop回調。 –

+2

你檢查了螢火蟲的任何錯誤 – Rafay

回答

2

通常這應該起作用。我懷疑你的#submit是表單提交按鈕或錨點。您訂閱了此元素的click事件,這是您觸發AJAX請求的地方。但是您不會取消此元素的默認操作,因爲您在函數結束時沒有return false。所以你的AJAX請求被激怒了,然後瀏覽器被重定向,並沒有時間來完成這個AJAX請求的處理。

因此,請在$.ajax函數後嘗試返回false。

+0

我有類似的問題 - 但沒有回傳如上所述 - http://stackoverflow.com/questions/25745682/jquery-ajax-stop-is-not-invoked-no-錯誤-200-OK – Lijo