在javascript中请求完成后将readyState更改为0

change readyState to 0 after request complete in javascript

本文关键字:readyState javascript 请求      更新时间:2023-09-26

我有一个代码,当用户在dropbox中更改值时,它从数据库中获取相关值并显示在文本区。我有一个清除按钮来清除文本区域的值。现在,我的问题是,当用户点击清除按钮时,它清除了textarea的值,当用户再次从dropbox中选择任何值时,它不会在textarea中显示相关值,直到用户刷新页面

my script for showing relevant value in textarea("box is the id of textarea")

 <script>
function showoffer(str) {
var xhttp;
if (str == "") {
document.getElementById("box").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
  document.getElementById("box").innerHTML = this.responseText;
}
};
 xhttp.open("GET", "getc.php?id=<?php echo $aff;?>&q="+str, true);
xhttp.send();
}
</script>

我的clearall按钮脚本

<script>
function clearall()
{
    document.getElementById("box").value="";
}
</script>

有bug的行为是由于您试图使用innerHTML以及value,建议使用value获取/设置文本区域,但无论如何这里是一个解释,但首先你不应该浏览器保持值之间的内部一致性总是在innerHTML更改时更新,但它不是另一种方式 ie。

第一次当ajax成功时,你使用innerHTML分配说"hello"到textarea,请注意,这也反映在它的值属性中,所以如果你做alert(document.getElementById("box").value)值将与上面分配的("hello")相同,但是当你按下clearall()它只擦除值属性和文本,即alert(document.getElementById("box").innerHTML)不会是空的。现在打破这种一致性可能是背后的bug行为的原因;将innerHTML替换为value将修复