Ajax允许我在推送按钮之前获取列表框值吗?

时间:2014-07-11 14:23:36

标签: java ajax jsp jstl el

我想在提交之前从listbox传入一个java bean的值 - 用户选择一个新的列表框值和一个基于所选值动态更新的表 - 其中,该值由一个bean函数,它根据值创建一个新的List,并用于填充表。

这是一个显示在表单项右侧的小表,仅供参考。

这是jsp页面,我有一个带有listbox set / get函数的bean。

我对ajax示例感到困惑,因为它们似乎需要一个url。我可以将网址放在同一页面上吗?它似乎也要求url指向页面或xml文件。我只想从当前页面的表单中的列表框值。

我不是顺便使用php(有很多php使用的例子)。 我不是在使用jquery。 我正在使用jstl / el。 我知道jstl / el和bean的东西是服务器端,javascript是客户端。

我愿意调整我的页面以适应一个有用的想法。

干杯,

大卫

实施例: 我被要求提供一些代码,所以这是我的微弱尝试。想象一下名为stuff.jsp的jsp函数。它在其函数中具有抓取列表框值并将其放入名为project_acronym的变量的位置。然后它尝试使用ajax作为参数传递它。然后我在createTable函数中尝试将其抓取到一个名为acronym的java bean值中,对于此测试用例,我只是尝试使用警报显示其值。

这不起作用。所有我似乎都使用responseText和responseXML,它们只返回stuff.jsp的网页源代码。我想要传递的参数,而不是源代码。

 function init() {
       document.add_user_roles.acronym.value = project_acronym;
        alert("project acro at client is: " + project_acronym);
         // alert happily shows the value.

        var url = "http://myserver.com/apps/myappstuff/stuff.jsp";
        var params = "acronym=" + project_acronym;
        var xmlhttp = false;
        try {


            if (window.XMLHttpRequest) {
                xmlhttp = new XMLHttpRequest(); //for IE7+, Firefox, Chrome, Opera, Safari
            } else {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //for IE6, IE5
            }
            //Create a asynchronous GET request
            xmlhttp.open("GET", url + "?" + params, true);

            //When readyState is 4 then get the server output
            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4) {
                    if (xmlhttp.status == 200) {
                        //document.add_user_roles.getElementById("DOMTarget2").innerHTML = xmlhttp.responseText;
                        alert(xmlhttp.responseText);
                        // yuck, this shows the stuff.jsp source code
                    }
                    else {
                        alert('Something is wrong !!');
                    }
                }
            };
            xmlhttp.send(null);
        } catch(e) {
            alert(e);
        }
        tableCreate();

function tableCreate() {
    <% String acronym = request.getParameter("acronym"); %>
    alert("acronym: " + "<%=acronym%>");

     ...  code to make table here

1 个答案:

答案 0 :(得分:0)

这不是我想要做的,但我创建了另一个名为rolestable.jsp的页面,该页面具有创建表的功能,并且可以访问与第一个jsp页面相同的bean,但设置为session =“page” 。然后,当发生列表框更改事件时,第一个jsp页面调用函数,该事件调用具有一个参数的新jsp页面(即,acronym = theselectedvalue)。第一页显示iframe中的表格。然后,我在第二页中进行元刷新,以便每15秒更新一次,以显示可能发生的任何更改。我讨厌这个,因为元刷新当然会使页面消失并以非常显着的方式重新出现。

ajax能否在这种情况下适应最小的调整?