我意识到Ajax是提交没有页面刷新的表单的公认方法,但这样做涉及在每个字段中循环并构造要提交的Post字符串。
是否没有其他方法可以使用浏览器内置功能提交表单,但拦截返回的html以停止刷新页面?
编辑: 与建议的副本不同,它询问表单验证:“我想运行javascript用户验证”
EDIT2: 主要问题是如何通过导航到新页面来停止服务器对提交的响应。是否存在服务器可以响应的内容会阻止整个页面刷新?
EDIT3: 如何返回http 204响应: 服务器已收到请求但没有要发回的信息,客户端应保留在同一文档视图中。这主要是为了允许脚本输入而不同时更改文档
答案 0 :(得分:1)
是的..有想法是让表单操作和onsubmit事件处理
考虑以下代码:
<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post">
Name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>
function validateForm() {
var x = document.forms["myForm"]["fname"].value;
if (x == "") {
alert("Name must be filled out");
return false;
}
}
此时您正在拦截调用以确保表单有效。如果一切都过去了,那么页面刷新就会触发。如果您不希望刷新,您需要通过ajax处理帖子,您需要重建整个调用。希望这会帮助你...干杯
一种简单的方法,如果你使用jquery是使用的序列化数据 http://api.jquery.com/serialize/功能
这样做的一种方法是使用jQuery:
<form id="myForm" name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post">
function validateForm() {
var x = document.forms["myForm"]["fname"].value;
if (x == "") {
alert("Name must be filled out");
return false;
}
var url = $('#myForm').attr('action');
var data = $('#myForm').serialize();
$.post(url, data);
}