问题现象:Form表单点击Button提交时,第一次调用接口会失败,整个iframe被刷新,接口status为canceld,但是第二次点击Button提交时,接口调用成功。
原因:
1.ajax请求时,button导致Form表单的提交操作变更了当前的URL,导致当前正在执行的ajax请求中止操作。中止后该请求的状态码将为canceled。
2.而URL发生变更的原因是:Form表单的提交操作和表单中按钮的click事件同时发生了调用,其中按钮的click事件触发导致当前url发生了变更。
3.第二次ajax可以成功执行的原因(个人瞎猜),浏览器有防止重复提交机制,导致后续的Form表单的提交操作没有执行。
解决办法:
1、将Button移动到Form表单之外,
2、将Button的type设置为button(默认为submit),
3、在Form表单的提交event中调用e.preventDefault()