2011-09-13 26 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