首先,最初的问题是在应用程序中有一个返回按钮,它使用< javascript:history.back()>返回上一页。什么在自我中运作良好。
但是,点击后会引发一个页面询问您是否要重新提交表单。发生这种情况是因为上一页使用POST从数据库中获取一些数据,并作为安全措施询问您是否明智地重新提交表单。
现在一切都清晰易懂,所以我把方法改为GET。 思考会解决所有问题,但遗憾的是并非如此。
这是有问题的表格。
<form accept-charset="utf-8"
action="../../../S/S/S/<%=CinematiqueProduit.SER_SYNTH_PROD%>"
method="GET" id="formule">
<table align="center" border="0">
<tr>
<td><i18n:message>Société</i18n:message> </td>
<td><b><%=ParamLibFacade.getLabelText(ApplicationProperties.getCompany(), Table.COMPANY)%></b></td>
<td><i18n:message>Code produit</i18n:message> </td>
<td><select name="cProd" onChange="validation('cProd')">
<option value="titre"><i18n:message>Sélectionner un produit</i18n:message></option>
<%
i = 0;
%>
<%
while (i < listeProSoc.nbProduit) {
%>
<%
produit = listeProSoc.codeProduit[i];
%>
<%
if (produit.equals(produitorigine)) {
%>
<option selected="selected" value="<%=produit%>"><%=listeProSoc.libProduit[i]%></option>
<%
} else {
%>
<option value="<%=produit%>">
<%=listeProSoc.libProduit[i]%></option>
<%
}
i++;
%>
<%
}
%>
</select></td>
</tr>
</table>
<p align="center"></p>
<input id="modifier" type="hidden" value="1"></input>
</form>
已经设置了它的动作。哪个好。问题是当&lt; onChange&gt;在&lt;中调用选择&gt; 。
该功能如下所示:
function validation(item) {
var modifier = document.getElementById("modifier");
modifier.setAttribute("value","1");
var theForm = document.getElementById("formule");
theForm.setAttribute("action","../../../S/S/S/<%=CinematiqueProduit.SER_SYNTH_PROD%>?Orig=<%=CinematiqueProduit.ORIG_LISTE%>");
theForm.submit();
}
它不会将操作更改为此功能中设置的操作。它具有下一页所需的控制器所需的信息,没有它就不会重定向。
我不确定为什么会这样。
提前谢谢!!!!!对不起,如果我错过了一些明显的东西!我不知道这里的问题是什么。
答案 0 :(得分:1)
由于您更新了操作,我会这样做:
theForm.action = "../../../S/S/S/<%=CinematiqueProduit.SER_SYNTH_PROD%>"
(但是有必要吗?其他功能可以提交表格吗?如果没有,只需将动作直接放在表格中)
然后,对于orig
属性,只需添加一个隐藏的输入,例如modifier
一个
<input id="modifier" name="modifier" type="hidden" value="1"></input>
<input id="orig" name="orig" type="hidden" value="<%=CinematiqueProduit.ORIG_LISTE%>" />
如果需要,我已经为修改器输入添加了名称,但之前可能没有使用它...
使用此解决方案应使用表单上的提交功能为GET请求生成正确的URL。
如果您需要动态设置操作URL,请更新输入的值,而不是在URL中放置值。
使用GET方法重新创建属性,覆盖您在开始时放置的属性。
这就是您需要使用隐藏输入来存储某些值的原因。只是更新会传递URL中的一些值。表格将完成其余的工作;)
document.getElementById("orig").value = "<%=CinematiqueProduit.ORIG_LISTE%>";
var theForm = document.getElementById("formule");
theForm.action = "../../../S/S/S/<%=CinematiqueProduit.SER_SYNTH_PROD%>";
theForm.submit();