我正在尝试使用javascript提交表单。这是我用来将操作设置为表单然后提交它的代码。这两行是在为按钮定义的onclick方法中。
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.
知道发生了什么事吗?
答案 0 :(得分: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;
}