form 表单提交被拦截的问题处理方法

 

 

   异步ajax提交数据到服务器处理信息,处理成功后将返回的数据装载到对应界面的表单隐藏域中,然后再使用  $(document.body).append($form);   $form.submit();  提交表单,此时遇到谷歌、IE等浏览器拦截表单提交后的URL新窗口,思考了很久,终于找到了解决办法:

以下内容转载自http://hezlh.blog.163.com/blog/static/1781091152013227101559654/

     一般情况下用  js  或  jquery  的  submit  方法提交  form  表单是不会被浏览器拦截的,但是发现异步的情况下用  js  提交  form  表单就会被浏览器拦截,这样就对功能的实现带来了很多的麻烦。网上看了好多都是同样的问题,解决办法都不是很理想,下面来详细分析下这个问题。 
       既然是在  ajax  中使用表单提交,肯定是需要  ajax  返回结果以后确定一个最终状态才能决定是否要提交表单。而ajax又是异步返回结果的,所以在返回结果后再决定提交表单,肯定会被浏览器拦截。
    那我们就想,jQuery   ajax   有没有同步的使用方法呢?答案是有的,在调用  ajax  时添加   async: false   这个参数即可。试了后发现,咦,真的可以!
    这个方法虽然是同步的,但是不违反这么使用的目的,如果  ajax  没有返回结果,当然也不能确定是否可以提交表单。在解决这个问题的时候,可能思路锁定在了  ajax  只能做异步的事,所以没有想到这样的解决办法。所以这个解决办法是有效的。

 

posted @ 2017-06-26 14:40  木念白  阅读(3764)  评论(0编辑  收藏  举报