2011-02-23 57 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; 
}