所以我的问题是当我使用if(this.readyState == 0)
时
它不起作用。我有一个脚本,用ajax加载表单,我可以选择关闭表单,但后来我意识到,如果我想再次打开该表单而不需要新的ajax请求,我需要一些变量。我有一个名为“isOpen”的变量,当xhr readyState为0时,我希望它检查isOpen是否为真,万一它是真的,它会中止xhr并显示表单数据。现在它似乎没有像我预期的那样工作。
这是我处理这个AJAX请求的全部功能。
function postPlacesForm() {
var yhteys = new XMLHttpRequest();
yhteys.onreadystatechange = function() {
var isOpen = false;
if(this.readyState === 0) {
if(isOpen === false) {
}
else if(isOpen === true) {
document.getElementById("places").style.display = "block";
yhteys.abort();
}
}
if(this.readyState === 4 && this.status === 200) {
document.getElementById("places").innerHTML = this.responseText;
document.getElementById("places").style.display = "block";
document.getElementById("ajax_close").style.display = "block";
isOpen = true;
}
};
yhteys.open("POST", "/js/ajax_inc/forms/postplaces.php", true);
yhteys.send();
}
答案 0 :(得分:0)
Okey我用readyState以某种方式工作2.谢谢大家,我很抱歉浪费你的时间。
下面的解决方案代码
var postPlaceFormIsOpen = 0;
function postPlacesForm() {
var yhteys = new XMLHttpRequest();
yhteys.onreadystatechange = function() {
if(this.readyState === 2) {
if(postPlaceFormIsOpen === 0) {
}
else {
yhteys.abort();
console.log("test");
document.getElementById("places").style.display = "block";
document.getElementById("ajax_close").style.dispaly = "block";
}
}
if(this.readyState === 4 && this.status === 200) {
document.getElementById("places").innerHTML = this.responseText;
document.getElementById("places").style.display = "block";
document.getElementById("ajax_close").style.display = "block";
postPlaceFormIsOpen++;
console.log(postPlaceFormIsOpen);
}
};
yhteys.open("POST", "/js/ajax_inc/forms/postplaces.php", true);
yhteys.send();
}
答案 1 :(得分:-2)
看起来你还不了解readyState
财产。
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState