2015-12-14 120 views
0

我有一個網站將用戶重定向到外部主機進行付款處理。當用戶根據付款處理結果返回到我的網站時,我需要使用POST方法將用戶重定向到最終網頁,以便他們的訂單可以完成。我有下面的代碼,適用於Chrome和Opera瀏覽器。在Firefox和IE瀏覽器中,它會失敗,並且用戶將以空白頁面結束。我需要修改什麼以適用於所有瀏覽器?用POST方法重定向javascript頁面

var cSecurem = 'https://www.website.com/'; 

function gotofinalpage(p1,p2) { 
    setLoginCookie('secure'); 
    var cURL = cSecurem + 'bh/finalpage.r?param1=' + p1 + '&param2=' + p2; 
    var myForm = document.createElement("form"); 
    myForm.method="post" ; 
    myForm.action = cURL ; 
    myForm.submit() ; 
} 
+0

你在IE和Firefox上遇到什麼錯誤? –

+1

所以你使用POST,但通過查詢字符串傳遞數據? – Musa

+2

URL中的值僅適用於GET方法。 POST方法將從'name'表單元素中獲取值。 –

回答

2

添加到DOM之前提交,然後再試一次,請形式:

document.body.appendChild(myForm) 

編輯:也許你應該嘗試內嵌DOM操作。假設你有一個空的div id爲formDiv

var el = document.getElementById("formDiv"); 
el.innerHTML = '<form id="myForm" action="https://www.website.com/bh/finalpage.r" method="post">' + 
'<input type="hidden" name="param1" value="' + p1 + '">' + 
'<input type="hidden" name="param2" value="' + p2 + '">' + 
'</form>'; 
document.getElementById("myForm").submit(); 

注意:不要忘了在運行文檔準備事件的代碼。否則,某些瀏覽器可能會失敗。

+0

我試過下面的代碼,它沒有解決問題。實際上,在嘗試此代碼之前停止工作的Opera正在運行。 'var myForm = document.createElement(「form」); myForm.method =「post」; myForm.action = cURL; document.body.appendChild(myForm); \t myForm.submit();' – iowa

+0

我編輯我的答案與另一種方法值得去嘗試。 – abeyaz

+0

這是我得到的錯誤。 'HTML文件的字符編碼沒有被聲明。如果文檔包含US-ASCII範圍之外的字符,則該文檔將在某些瀏覽器配置中呈現亂碼文本。頁面的字符編碼必須在文檔或傳輸協議中聲明。基於我在網上做過的搜索,我添加了'charset ='utf-8'到Javascript,但是這看起來並沒有多大幫助'' – iowa