Ajax 中止或 readyState 未定义
abort or readyState is undefined with Ajax
我收到以下代码的错误;
Uncaught TypeError: Cannot read property 'readyState' of undefined
当我尝试删除 readyState 以查看我遇到该错误时发生了什么;
TypeError: Cannot read property 'abort' of undefined
get: function () {
var ajaxReq = $.ajax({
type: 'GET',
url: data.url,
dataType: "json",
success: function (response, status) {
callback(response);
},
beforeSend: function () {
if (ajaxReq != 'ToCancelPrevReq' && ajaxReq.readyState < 4) {
ajaxReq.abort();
}
}
});
}
该功能与按键一起使用;
keypress: function () {
setTimeout(function () {
if ($(OnePageCheckout.Selector.CardNumber).val().length == 7) {
$(".payment-installment-container").removeClass("d-none");
InvUtility.Loader.Open();
var model = {
value: $(OnePageCheckout.Selector.CardNumber).val()
}
OnePageCheckout.OnCardNumberUpdate.event(model);
}
}, 1000)
OnePageCheckout.OnCardNumberUpdate.init();
},
按键发送请求很多次,我想确保成功过程只工作一次
您应该在调用 $.ajax().
之前声明 ajaxReq
然后在尝试使用它之前检查它是否不为空,而不是使用像 ToCancelPrevReq
.[=14 这样的特殊值=]
一旦获得成功响应,您可以将其重置,以便下一次按键可以再次发出 AJAX 请求。
var ajaxReq;
...
if (ajaxReq && ajaxReq.readyState < 4) {
ajaxReq.abort();
}
$.ajax({
type: 'GET',
url: data.url,
dataType: "json",
success: function(response, status) {
ajaxReq = null;
callback(response);
}
});
这段代码解决了我的问题
我在 get 函数之外定义了变量。如果我在GET函数中定义它,它会被当作一个新的事务,因为它每次都会被清空。所以在相关函数之外定义它给出了正确的结果
var jqxhr = {abort: function () {}};
get: function(){
jqxhr.abort();
var ajaxReq = $.ajax({
type: 'GET',
url: data.url,
dataType: "json",
success: function (response, status) {
callback(response);
}
});
}
我收到以下代码的错误;
Uncaught TypeError: Cannot read property 'readyState' of undefined
当我尝试删除 readyState 以查看我遇到该错误时发生了什么;
TypeError: Cannot read property 'abort' of undefined
get: function () {
var ajaxReq = $.ajax({
type: 'GET',
url: data.url,
dataType: "json",
success: function (response, status) {
callback(response);
},
beforeSend: function () {
if (ajaxReq != 'ToCancelPrevReq' && ajaxReq.readyState < 4) {
ajaxReq.abort();
}
}
});
}
该功能与按键一起使用;
keypress: function () {
setTimeout(function () {
if ($(OnePageCheckout.Selector.CardNumber).val().length == 7) {
$(".payment-installment-container").removeClass("d-none");
InvUtility.Loader.Open();
var model = {
value: $(OnePageCheckout.Selector.CardNumber).val()
}
OnePageCheckout.OnCardNumberUpdate.event(model);
}
}, 1000)
OnePageCheckout.OnCardNumberUpdate.init();
},
按键发送请求很多次,我想确保成功过程只工作一次
您应该在调用 $.ajax().
之前声明 ajaxReq
然后在尝试使用它之前检查它是否不为空,而不是使用像 ToCancelPrevReq
.[=14 这样的特殊值=]
一旦获得成功响应,您可以将其重置,以便下一次按键可以再次发出 AJAX 请求。
var ajaxReq;
...
if (ajaxReq && ajaxReq.readyState < 4) {
ajaxReq.abort();
}
$.ajax({
type: 'GET',
url: data.url,
dataType: "json",
success: function(response, status) {
ajaxReq = null;
callback(response);
}
});
这段代码解决了我的问题
我在 get 函数之外定义了变量。如果我在GET函数中定义它,它会被当作一个新的事务,因为它每次都会被清空。所以在相关函数之外定义它给出了正确的结果
var jqxhr = {abort: function () {}};
get: function(){
jqxhr.abort();
var ajaxReq = $.ajax({
type: 'GET',
url: data.url,
dataType: "json",
success: function (response, status) {
callback(response);
}
});
}