2012-01-25 35 views
0

這種方法基本上打開一個新的網頁,在新窗口中的網址進來e.result參數,在這裏我想打開新窗口中的新窗口中相同的窗口。jQuery的 - 打開鏈接在新標籤表格提交

 $("#formMain").attr("action", e.result); 
     $("#formMain").attr("method", "post");  
     $("#formMain").attr('target', '_blank'); 
     $("#formMain").submit(); 

任何建議,將不勝感激

回答

2

不幸的是,你不能設置從JavaScript這個屬性。它是瀏覽器根據其設置決定是否在新窗口或新選項卡中打開鏈接。

+0

我不相信這是不幸的,但你說的很對。 –

1

一般而言,將表單提交給用戶將看到的頁面是不明智的,因爲它可能導致多個提交(如果用戶前進/後退,他們重新打開標籤等)。由於您已經在使用jQuery,請改用$ .post()或$ .get()。 (見http://api.jquery.com/jQuery.post/http://api.jquery.com/jQuery.get/)。位於e.result的腳本應該簡單地處理表單提交(可能將內容保存到數據庫)並返回結果。然後用戶會看到一個基於該結果的單獨頁面。

所以,你的代碼看起來是這樣的:

$("#formMain").submit(function() { 
    return false; 
}); 

function submitForm(url) 
    $.post(url, $("#formMain").serialize(), function(result) { 
     window.open('resultPageURL&result='+encodeURIComponent(result), '_blank'); 
    }); 
} 

submitForm(e.result); 

顯然結果的格式是由你 - 你可以很容易地返回一個JSON對象或結果頁面,如果你想要的網址,使用:

try { 
    var obj = $.parseJSON(result); 
    window.open('resultPageURL&'+JSON.stringify(obj), '_blank'); 
} catch (e) { 
    alert('Not a valid JSON result'); 
} 

window.open(result, '_blank'); 
相關問題