【问题标题】:How can I access variables sent in the request via jQuery?如何通过 jQuery 访问请求中发送的变量?
【发布时间】:2010-11-18 15:00:45
【问题描述】:

我正在使用 struts。我的 ActionForm 在其中设置了一个 ArrayList,我如何从 JSP 访问该数组,ActionForm 在 jQuery 中由控制器在单击按钮时发送到该数组。这样我就可以遍历该数组的元素。我猜它是这样的,但这是在黑暗中刺伤(这是行不通的)。

$('myButton').click(function(){
    var myArrayToLoopThrough = $('myForm.myArray');
    for(){
        //looping stuff
    }
}

【问题讨论】:

    标签: jquery arrays loops struts jquery-click-event


    【解决方案1】:

    jQuery 对 JSP 生成的 HTML 进行操作。

    因此,请使用 Firebug for Firefox 等工具在浏览器中查看生成的 HTML。

    然后您可以使用 jQuery 来选择和迭代 HTML 元素。以下是最有用的东西的基本语法:

    选择一个 ID:$("#id")

    按类选择:$(".class")

    按 HTML 标记选择:$("p") 或 $("span")

    迭代选择

    $(...something...).each(function(){
       // this is the DOM element
       // $(this) is a jQuery object containing the DOM element
    });
    

    Official jQuery documentation on selectors


    编辑

    根据您的 cmets,您似乎正在寻找一种与服务器对象而不是生成的 HTML 进行通信的方法。

    Javascript(jQuery 是用 Javascript 编写的)是一种只能与生成的 HTML 交互的网络浏览器语言。您的 Java 对象不会发送到浏览器。

    如果您确实需要从服务器检索数据,那么您需要一个新的 HTTP 请求来检索这些数据。这可以在 jQuery 中使用 AJAX methods 来完成。

    【讨论】:

    • 对不起。我的数组没有用来访问它的 ID。只是持有它的对象的吸气剂。如何访问吸气剂?会不会是这样的: var array = $('myForm.getArray()');
    • 听起来你想要 var array = $(this).closest('form').serializeArray()
    • 不,它不是我想要访问的 HTML 表单对象。它是我想要访问的 Struts 表单。我认为我最初的查询具有误导性,抱歉。
    • 您能否详细说明您在问题中的需求。也许是您要检索的数据示例。我编辑了答案以扩展可能的解决方案。
    • 谢谢文森特。虽然我最后没有用你的方法,但看起来确实好多了。我已经临时连接了我想要检查的数据的 ID,并将它们作为隐藏字段传递到 HTML 表单中,我将在 JavaScript 中拆分它们来完成我的工作。无论如何,我需要做的就是查看 ID。
    【解决方案2】:

    您可能想查看.serializeArray()。您可以将表单中的所有数据放入一个不错的对象中,这样您就可以对数据做任何您想做的事情。

    jQuery .serializeArray() Documentation

    var data = $('#form-id').serializeArray();
    

    现在您可以循环访问data。密钥是name 和value。

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 没有。我认为我的问题措辞不当。我不需要访问 HTML 表单。使用struts 你有一个Action 和Form。表单只是一个带有 getter 和 setter 的 bean。我想访问该表单的 getter,而不是来自 jsp 的 HTML。
      【解决方案4】:

      这就是你要找的吗?

      $('.myButton').click(function(e) {
          var data = $(this).closest('form').serializeArray();
          for( var i = 0; i < data.length; i++ ) {
              var field = data[i];
              console.log( field.name + '=>' + field.value );
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2014-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多