【发布时间】:2022-01-16 21:41:52
【问题描述】:
我正在尝试向服务器发出一个 post 请求并对响应做一些事情。事情似乎在服务器端起作用。问题是页面在响应完成后重新加载,我无法对响应做任何事情。
常见的建议是使用button 或preventDefault。这些建议并不能解决问题:如下所示,输入类型是button(不是submit)和preventDefault() 事件不起作用。
有人知道我缺少什么吗?
<form id="modelCodeForm">
<label for="codehere"></label>
<div id="modelAreaDiv">
<textarea id="modelArea" cols="60" rows="20">
stuff
</textarea>
<br>
<input id="submitUserModel" type="button" value="run on server">
</div>
</form>
function initializeUserModel(){
let model = document.getElementById("modelArea").value;
fetch('http://localhost:8080/', {
method: 'post',
headers: {'Content-Type': 'text/plain'},
body: model
})
.then(response => response.json())
.then(data => {
console.log(data);
}).then(console.log("received!"))
}
【问题讨论】:
-
我无法重现该问题。单击该按钮不会触发任何 HTTP 请求。 (包括来自
fetch的initializeUserModel函数中的那个,因为它从未被调用过) -
在调用函数的按钮上有一个事件监听器。
-
按钮是否提交重新加载页面的表单?
-
按钮不提交表单,只提交
textarea值。document.getElementById("submitUserModel").addEventListener("click",initializeUserModel,false);
标签: javascript promise request response reload