Tôi đã đoạn mã sau đó là cho tôi một tin nhắn Method POST, Status (canceled)
lỗi:Method POST, Tình trạng tin nhắn (hủy bỏ) lỗi
$(document).ready(function() {
var xhr = false;
get_default();
$('#txt1').keyup(function() {
if(xhr && xhr.readyState != 4){
alert("abort");
xhr.abort();
}
if ($("#txt1").val().length >= 2) {
get_data($("#txt1").val());
} else {
get_default();
}
});
function get_data(phrase) {
xhr = $.ajax({
type: 'POST',
url: 'http://intranet/webservices.asmx/GetData',
data: '{phrase: "' + phrase + '"}',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(results) {
$("#div1").empty();
if(results.d[0]) {
$.each(results.d, function(index, result) {
$("#div1").append(result.Col1 + ' ' + result.Col2 + '<br />');
});
} else {
alert("no data available message goes here");
}
},
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message) ;
}
});
}
function get_default() {
$('#div1').empty().append("default content goes here.");
}
});
Mã này thực sự hoạt động miễn là mỗi yêu cầu ajax hoàn tất, nhưng nếu tôi gõ nhanh vào txt1
, tức là nhập ký tự tiếp theo trước khi yêu cầu trước kết thúc, tôi nhận được thông báo lỗi Method POST, Status (canceled)
.
Bất kỳ ai biết tại sao điều này đang xảy ra và cách sửa lỗi?
Điều này có thể hữu ích, hãy xem [stackoverflow.com/questions/6678467] (http://stackoverflow.com/questions/6678467/ajax-sent-on-keyup-duplicates-results-when-fast-typing) – safarov
Oleg có lẽ là câu trả lời hay nhất ở đây. Bản sửa lỗi của anh ấy sẽ giúp bạn tiến xa hơn với kịch bản. BAO GIỜ: trong khi đọc mã của bạn tôi thấy rằng bạn không tạo ra mã lý tưởng cho vấn đề này. Tôi sẽ tạo ra một câu trả lời cho bạn. –