Tôi đang sử dụng phiên bản Java ajax 1.4.1 trong ứng dụng MVC của mình (mặc dù vấn đề tôi đang thảo luận tương tự với phiên bản jQuery cũ 3.2.1) là tốt, để kiểm tra trong quá trình đăng ký khách hàng nếu tên người dùng đã được đăng ký. Khi người dùng nhấp vào nút "Kiểm tra tính khả dụng", tôi hiển thị hình ảnh bận thay cho nút kiểm tra (thực sự ẩn nút kiểm tra và hiển thị hình ảnh) trong khi kiểm tra tính khả dụng trên máy chủ và sau đó hiển thị thông báo. Đó là một cuộc gọi Sync (async: false) và tôi đã sử dụng beforeSend: và complete: để hiển thị và ẩn hình ảnh bận và nút kiểm tra. Điều này đang làm việc tốt trên Firefox nhưng trong IE 8 và Chrome, không phải hình ảnh bận xuất hiện cũng không phải nút kiểm tra ẩn thay vì nút kiểm tra vẫn được nhấn như toàn bộ điều đã treo. Các tin nhắn khả dụng và không có sẵn xuất hiện chính xác. Dưới đây là các mã:jQuery Ajax (trước khi gửi và hoàn tất) hoạt động đúng trên FireFox nhưng không hoạt động trên IE8 và Chrome
HTML trong User Control (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" />
Trên đỉnh kiểm soát người dùng này, tôi đang liên kết một bên ngoài javascript tập tin đó có đoạn mã sau:
$(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);
}
});
}
Điều gì đã xảy ra với cộng đồng? 18 người đã xem câu hỏi này nhưng không ai trả lời ngay cả sau 2 ngày. Điều này thực sự phức tạp hay tôi không hỏi nó đúng cách? –
nếu bạn đặt isvalid thành true hoặc false, bạn có chắc chắn bạn có thể so sánh nó với '1' hay không. nếu (có sẵn) nên là đủ ... Điều này sẽ không trả lời câu hỏi của bạn :-) – Kennethvr
Cảm ơn, yeah tôi nhận thấy rằng và trong khi cố gắng tìm ra vấn đề thực tế, tôi cũng cố định điều này nhưng như mong đợi - nó đã không thực hiện bất kỳ khác nhau. Tôi sẽ cập nhật mã ở trên với thay đổi này. –