js表单提交和submit提交的区别如下:
js提交表单时不会会带上按钮的参数传递到服务端。
而submit按钮提交的时候会把button上的name和value一起作为请求参数传递到服务端。
举例说明:
<form id="myfrom">
<input type="submit" onclick="doMySubmit()" name="MyList" value="SEND" class="button actionbutton" />
</form>
这里提交的时候会把参数名Mylist和参数值Send传到目标地址
<form id="myfrom">
<input type="button" onclick="doMySubmit()" name="MyList" value="SEND" class="button actionbutton" />
</form>
提交的脚本:
function doMySubmit() {
var myform = document.getElementById('searchFilterForm')
myform.myfield.value = "Hello World"
myform.submit()
}
这种情况下不会把button的参数带给服务端。
document.querySelector("#btnAjax").onclick = function () {var ajax = new XMLHttpRequest()
// 使用post请求
ajax.open('post','ajax_post.php')
// 如果 使用post发送数据 必须 设置 如下内容
// 修改了 发送给 服务器的 请求报文的 内容
// 如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据:
ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded")
// 发送
// post请求 发送的数据 写在 send方法中
// 格式 name=jack&age=18 字符串的格式
ajax.send('name=jack&age=998')
// 注册事件
ajax.onreadystatechange = function () {
if (ajax.readyState==4&&ajax.status==200) {
console.log(ajax.responseText)
}
}
}
这个要看你是什么时候调用的重复提交有二种可能
1、你的提交写在了一个循环里面,一旦失败会重新执行这个循环提交
2、你代码里面的提交可能放在了类似于setTimtOut()这种时间事件函数里,他是会隔断时间就执行一次的。
如果浏览器访问成功,JS提交不成功,可以试着换种提交的方式, 不用submit提交 ,用ajax试试看能不能跑通
最后,检查你提交的路径是否有误,比如,放在其它包里,要跳出该包,需要在url前加../