2011-02-23 59 views
0

我正在嘗試使用javascript提交表單。這是我用來將操作設置爲表單然後提交的代碼。這兩行代碼是爲按鈕定義的onclick方法。在Javascript中使用操作提交表單

document.form1.action = fin_string; 
document.forms["form1"].submit(); 

這裏的問題是,當我這樣做時,fin_string被別的東西所取代。例如。當fin_string =「http://www.gmail.com」這個工作,但是當我保留fin_string作爲一些其他字符串(相對於具有附加參數的當前路徑)它會被改變。 alert(fin_string),正確顯示字符串,但是當我使用字符串在表單上設置操作並提交時,它會發生更改。

這就是我想要的fin_string爲(相對於當前路徑)

remote-service/FeedMergerManualTrigger?locales=en_GB-en_SG&deleteOutputFile=Y&localFilePath=c:/go/ 

,但是這是瀏覽器去的時候我給它分配一個動作並提交表單。

remote-service/FeedMergerManualTrigger?LMN=UK&ZJ=SG&localResourcesMode=on&EUPath=c:/go/&delete_op=Y. 

任何想法是怎麼回事?

+1

是使用'GET'作爲'method'的形式?在我看來,你的問題不是與字符串有關,而是表單根據輸入字段設置值(正確)。參數是否作爲表單中的字段存在? – polarblau 2011-02-23 08:52:04

回答

0

有這樣的代碼,而不是,它將會分配的,而不是添加到查詢字符串因此它不會改變隱藏的表單元素:

var fin_string = "remote-service/FeedMergerManualTrigger"; 
var arrData = {"locales": "en_GB-en_SG", "deleteOutputFile": "Y", "localFilePath": "c:/go/"}; 
var oForm = document.forms["form1"]; 
oForm.action = fin_string; 
for (var key in arrData) 
    AddOrUpdate(oForm, key, arrData[key]); 
//encodeURIComponent(arrData[key]) 
oForm.submit(); 

function AddOrUpdate(oForm, sName, sValue) { 
    var oInput = oForm.elements[sName]; 
    if (!oInput) { 
     oInput = document.createElement("input"); 
     oInput.type = "hidden"; 
     oInput.name = sName; 
     oForm.appendChild(oInput); 
    } 
    oInput.value = sValue; 
}