【问题标题】:Can Ajax allow me to get a listbox value before submit button pushed?Ajax 可以让我在提交按钮按下之前获取列表框值吗?
【发布时间】:2014-09-02 05:08:35
【问题描述】:

我想在提交之前将列表框中的值传递给 java bean——在这种情况下,用户选择一个新的列表框值和一个基于所选值动态更新的表——其中,该值由一个 bean 函数,它根据值创建一个新的 List 并用于填充表。

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

这是 jsp 页面,我确实有一个带有列表框设置/获取功能的 bean。

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

顺便说一句,我没有使用 php(那里有很多使用 php 的示例)。 我没有使用 jquery。 我正在使用 jstl/el。 我确实了解 jstl/el 和 bean 的东西是服务器端,而 javascript 是客户端。

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

干杯,

大卫

示例: 我被要求提供一些代码,所以这是我微弱的尝试。想象一下 jsp 中的一个名为 stuff.jsp 的函数。它在函数 a 中获取列表框值并将其放入名为 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

【问题讨论】:

  • 如果能分享一些代码就好了。
  • 对此的好答案将太长。基本上,您需要进一步研究客户端代码和服务器端代码之间的区别,以及创建 Ajax 的原因。而且您需要开始使用 jQuery 进行 Ajax 调用,而不是重新发明轮子。

标签: java ajax jsp jstl el


【解决方案1】:

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

ajax 可以通过最小的调整适应这种情况吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 1970-01-01
    • 2011-07-30
    • 2012-02-07
    • 1970-01-01
    相关资源
    最近更新 更多