我在我的MVC應用程序中使用jQuery ajax版本1.4.1(雖然我討論的問題與舊版本的jQuery 3.2.1 ),以便在用戶註冊期間檢查用戶名是否已經註冊。當用戶點擊「檢查可用性」按鈕時,我檢查服務器上的可用性,然後顯示一條消息,同時顯示忙圖像來代替檢查按鈕(實際上隱藏檢查按鈕並顯示圖像)。這是一個同步調用(async:false),我使用beforeSend:和complete:顯示和隱藏忙圖像和檢查按鈕。這個東西在Firefox上運行的很好,但在IE 8和Chrome中,既沒有顯示繁忙的圖像,也沒有隱藏檢查按鈕,而是在整個事件掛起時仍然按住檢查按鈕。可用和不可用的消息顯示正確。下面是代碼:jQuery Ajax(beforeSend和complete)在FireFox上正常工作,但不在IE8和Chrome上
HTML在用戶控件(ASCX):
<div id="available">This Username is Available</div>
div id="not_available">This Username is not available</div>
<input id="txtUsername" name="txtUsername" type="text" size="50" />
<button id="check" name="check" type="button">Check Availability</button>
<img id="busy" src="/Content/Images/busy.gif" />
在此用戶控件的頂部,我連接一個外部的JavaScript文件具有以下代碼:
$(document).ready(function() {
$('img#busy').hide();
$('div#available').hide();
$('div#not_available').hide();
$("button#check").click(function() {
var available = checkUsername($("input#txtUsername").val());
if (available == "1") {
$("div#available").show();
$("div#not_available").hide();
}
else {
$("div#available").hide();
$("div#not_available").show();
}
});
});
function checkUsername(username) {
$.ajax({
type: "POST",
url: "/SomeController/SomeAction",
data: { "id": username },
timeout: 3000,
async: false,
beforeSend: function() {
$("button#check").hide();
$("img#busy").show();
},
complete: function() {
$("button#check").show();
$("img#busy").hide();
},
cache: false,
success: function(result) {
return result;
},
error: function(error) {
$("img#busy").hide();
$("button#check").show();
alert("Some problems have occured. Please try again later: " + error);
}
});
}
社區發生了什麼事? 18人查看了這個問題,但2天后沒人回答。這真的很複雜,或者我沒有正確地問它嗎? – 2010-02-12 07:05:17
如果您將true設置爲true或false,您確定可以將其與'1'進行比較。如果(可用)應該是足夠的...這不會回答你的問題:-) – Kennethvr 2010-02-12 07:42:41
謝謝,是的,我注意到,雖然試圖找出實際問題,我也修復這個東西,但如預期的 - 它沒有做任何不同。我將使用此更改更新上面的代碼。 – 2010-02-12 07:50:13