看起来我的MVC 3项目中的ajaxStart正在运行但不是ajaxStop或ajaxComplete。问题不是浏览器特定的,因为我在IE9,Mozilla和Chrome中测试了这个问题。
我的项目只是取一系列字母并找到组合/排列并将其显示给用户。启动ajax函数,触发ajaxStart并显示“请稍候”指示符。当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');
}
});
});
});
我错过了什么吗任何帮助将不胜感激。感谢。
答案 0 :(得分:2)
通常这应该有效。我怀疑您的#submit
是表单提交按钮或锚点。您已订阅此元素的click
事件,该事件是您触发AJAX请求的位置。但是你没有取消这个元素的默认动作,因为你在函数结束时没有return false
。所以你的AJAX请求是trigerred,然后浏览器被重定向,没有时间完成这个AJAX请求的处理。
因此,请尝试在$.ajax
函数之后返回false。