使用HTTP GET从数据库

时间:2016-11-02 10:36:04

标签: javascript jsp http get

首先,最初的问题是在应用程序中有一个返回按钮,它使用< 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> &nbsp;</td>
                <td><b><%=ParamLibFacade.getLabelText(ApplicationProperties.getCompany(), Table.COMPANY)%></b></td>
                <td><i18n:message>Code produit</i18n:message> &nbsp;</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();
}

它不会将操作更改为此功能中设置的操作。它具有下一页所需的控制器所需的信息,没有它就不会重定向。

我不确定为什么会这样。

提前谢谢!!!!!对不起,如果我错过了一些明显的东西!我不知道这里的问题是什么。

1 个答案:

答案 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();