1. 程式人生 > >虛擬表單提交模擬ajax請求

虛擬表單提交模擬ajax請求

前端開發人員經常會遇到ajax請求出現跨域問題,比如做單點登入。結合本人開發經驗推薦一方法——虛擬表單提交,解決此類問題。此方法的特點是簡單易懂!好了,直接上乾貨!
function formCommit(){
var formobj;
// window.top.open(url,"_blank");
$.ajax({
type: 'post',
dataType : 'jsonp',
url: '某個具體系統的url',
success:function(data){
// 虛擬化一個表單,放在一個虛擬化的iframe中,後提交
formobj = $("<form style='display:none' id='formMap' target='_self'  action='某個具體系統的url' method='post'><input name='username' value='使用者名稱'/><input name='password' value='密碼'/><input name='jsonp' value='true'/><input name='token' value='"+data+"'/></form>");
// 虛擬化一個iframe,承載虛擬化表單
var tempIframe = $("<iframe style='display:none' src='登入頁面統一路徑下任何一個jsp或html檔案' id='tempIframe' name='tempIframe' />");
// body中新增虛擬化的iframe
$("body:eq(0)").append(tempIframe);
            // 設定iframe的src
$("#tempIframe").attr("src", "AYKJ.GISDevelopTestPage.html");
// 獲取iframe中的內容
var mainIframe = (document.getElementById("tempIframe").contentDocument || document.getElementById("tempIframe").contentWindow.document);
// iframe中新增表單
$(mainIframe.body).append($(formobj));
// 在iframe中找到表單並提交
$(mainIframe).find("#formMap").submit();

setTimeout(function(){  
window.parent.open("系統中具體的某個頁面的url","_blank"); 
},1500);