提交并返回相同的URL(javascript)

时间:2018-04-06 08:40:45

标签: javascript jsp

需要一些帮助找出最简单的提交方式(仅因为我需要在下拉列表中检索所选值,所以我可以在同一个jsp中的其他sql select中使用它) -

这是有效的(填充下拉列表并在更改时触发) -

<select name="assettypeid" id="assettypeid" onchange="typechanged();">                      
    <sql:query var="queryresults" dataSource="jdbc/database">
        SELECT id, name FROM assettype
    </sql:query>
    <option value="">-- Please Select --</option>    
    <c:forEach var="row" items="${queryresults.rows}">
        <option value="<c:out value="${row.id}"/>"
            <c:if test="${row.id == param.assettypeid}">
                <c:out value="selected"/>
            </c:if>
            <c:out value="${row.name}" />
        </option>
    </c:forEach>
</select>

这是有效的(提取并确认所选的id) -

function typechanged() {       
    if(document.getElementById("assettypeid").selectedIndex == 0) {
        var typechosen = '%';
        alert(typechosen);
        return typechosen;
    }
    else {
        var typechosen = document.getElementById("assettypeid").value;
        alert(typechosen);
        return typechosen;
    }        
}

现在我想提交,所以我可以 -

String typeselected = request.getParameter("assettypeid");

但我没有这样的表单或表单名称(如果可以避免,我宁愿不创建一个,因为我的整个页面也有一个刷新计时器,并且表单似乎每次刷新时重新运行表单提交)。

因此,javascript函数应该只提交一次(当assetype更改时)并将我返回到相同的URL /页面,而不会收到我在同一页面刷新的浏览器的警告。

赞赏的想法(我是新手所以需要尽可能多的笔记)。

此致 拉尔夫

1 个答案:

答案 0 :(得分:0)

您可以创建一个javascript函数,您可以在其中通过ajax发送所需的值,并在onchange事件上调用该函数。

  <script>
    function setValues() {

            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) 
                { 
                          // store the data retrieved

               document.getElementById("demo").innerHTML = this.responseText;
               }

                else {
                  alert(" Request not successful");
                }      

            };
            xmlhttp.open("GET", "url?assettypeid=" +  typechosen, true);
            xmlhttp.send();

    }
    </script>

使typechosen成为全局变量

onchange事件中,您可以这样称呼它:

<select name="assettypeid" id="assettypeid" onchange="typechanged();setValues();">

您可以按如下方式在jsp上创建div

<div id="demo></div>

请勿忘记将div放在<script>标记之前,以便该功能可以获得id