異步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 只能做異步的事,所以沒有想到這樣的解決辦法。所以這個解決辦法是有效的。