javascript - 为什么Ajax 响应没有显示在innerHTML 中并变回原始文本?
问题描述
我正在尝试从本地文件中获取响应并显示它。但是,响应文本会变回原始文本。任何帮助,将不胜感激。
<script>
function getMsg(text) {
if (text.length == 0) {
document.getElementById("msg").innerHTML = "";
return;
} else {
document.getElementById("msg").innerHTML = "sending request";
var xhttp = new XMLHttpRequest();
var filepath = "";
if (inputText == "File1") {
filepath = "file1.txt";
} else if (inputText == "File2") {
filepath = "file2.txt";
}
xhttp.open("GET", filepath, true);
xhttp.send();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert(this.response);
document.getElementById("msg").innerHTML = this.responseText;
} else {
document.getElementById("msg").innerHTML = "failed";
}
};
}
}
</script>
<body>
<form onsubmit="getMsg(this.file.value)">
<label for="file">File:</label>
<input type="text" name="file" id="file">
<button type="submit">Get</button>
</form>
</body>
解决方案
这是因为您的表单通常与您的 ajax 一起提交并重新加载页面。onsubmit
您可以通过从处理程序返回 false 来阻止表单提交。
<form onsubmit="getMsg(this.file.value); return false">
推荐阅读
- reactjs - 从切片调用操作会从我的商店中删除切片
- python - 尝试安装 pyInstaller,但是在创建 venv 时出现错误提示“系统找不到指定的路径”。
- websphere - 如何使用 wsadmin 脚本读取 MQ 基本队列名称?
- spring - 一次只有 3 个线程访问 Spring 服务层,同时将其他请求保留在缓冲区中
- ios - 斯威夫特:有没有人让代码在他们的设备上正常工作,但在模拟器中却不行?
- redis - 使用 CLIENT KILL USER 的语法错误
在 Redis 5.9.102 上 - python - 使用 Selenium (Python) 单击按钮的问题
- flask - 使用 SqlAlchemy op.create_table 创建标签时无法使用 db.drop_all()
- javascript - 从 javascript promise (expressjs + neDB) 中提取函数
- scala - IndexedSeq[Int] 与 Array[Int]