Javascript 是否将表单数据提交到servlet并在不重新加载页面的情况下检索答案?
在网页上,我想向servlet提交表单数据和POST请求,接收答案并根据结果进行处理。页面不应重新加载。不幸的是,我对这类东西(HTML和JavaScript)不是很有经验 目前,我成功地获得了两个不成功的结果:Javascript 是否将表单数据提交到servlet并在不重新加载页面的情况下检索答案?,javascript,html,ajax,Javascript,Html,Ajax,在网页上,我想向servlet提交表单数据和POST请求,接收答案并根据结果进行处理。页面不应重新加载。不幸的是,我对这类东西(HTML和JavaScript)不是很有经验 目前,我成功地获得了两个不成功的结果: 要么发送POST请求(由servlet正确处理),要么重新加载页面并显示普通XML结果 或者POST请求从不发送,JavaScript函数进行一些处理,但基本上没有结果 我从这一页上得到了这样做的想法: 具体而言: XMLHttpRequest对象是开发人员的梦想,因为您可以: 在不重
在不重新加载网页的情况下更新网页 目前我没有这样做
我有这样一个HTML表单:
<form id="editform"
action="myAction"
method="post"
onSubmit="return submitForm(this);">
....
<input type="hidden" name="operation" value="doSomething" />
<input type="image" src="images/button.png" />
</form>
function submitForm(oFormElement)
{
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.open (oFormElement.method, oFormElement.action, true);
xmlHttpRequest.onload = function()
{
if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200)
{
alert (xmlHttpRequest.responseXml);
}
else
{
alert ("Failed!");
}
};
xmlHttpRequest.send (new FormData (oFormElement));
return false;
}
如果JavaScript返回false
,那么我在浏览器web开发人员控制台中看不到任何POST请求,而且servlet也从未收到任何请求。警报框打印未定义的内容(情况2)
如果JavaScript返回true
则POST请求确实被发送,并返回正确的结果,但页面被重新加载(案例1)
在肯定if子句中,我希望处理结果XML并相应地设置HTML元素。您应该使用jQuery$。ajax 例如:
$.ajax({
url: "myUrl", // url to make request
type: "POST", // method of request
data: {key: "value"}, // Here comes your data
success: function(response){ // If request is made successful
// Here you can handle response from your request
console.log(response)
},
error: function(xhr){// If request has faced issue
console.log(xhr.responseText)
}});
必须使用
xmlHttpRequest.responseXml
而不是xmlHttpRequest.responseXml
。另外,似乎ormelement.action的并没有像我希望的那样提取我的
元素…我真的不知道如何使用jQuery,但我将代码放在
标记之间-它似乎不起作用。POST请求已发送,但页面已重新加载。我更喜欢不使用jQuery的解决方案。如果只是将其复制并粘贴到脚本标记中,则无法正常工作。这是一个关于如何使用它来提出请求的示例。您应该在函数中插入$.ajax请求,并在单击按钮时调用它。