0

我想使用 JQuery ajax 加载页面的一部分。

url 是 Struts2 动作请求。

$("#accountListDiv").html(ajax_load).load(url, $("#testform").serializeArray(),   function(){
    //alert('done');
});

//serializeArray 和序列化不起作用。(可能是 struts 操作确实期望这些函数生成格式的数据。对此问题的更多见解将有所帮助)。

在正常 HTTP 请求的情况下,Struts2 动作中的所有变量都将自动分配在 JSP 页面中输入的值。

我想在使用 Ajax 时做同样的事情。我不想像这样明确地传递表单中的每个参数。

$("#indexDiv").html(ajax_load).load(url, "rateTypeId4Index="+rateTypeId4Index, function(){
    xyz();
});

我知道有用于 struts 的 Dojo 插件,但它已被弃用。如果我能够使用 JQuery 解决这个问题,那么它对我来说就绰绰有余了。

(我正在寻找不涉及使用 JQuery-struts 插件的解决方案)。

4

3 回答 3

1

我相信你的意思是使用serialize而不是serializeArray

于 2012-04-23T21:22:02.383 回答
0

1 您在发送请求时遇到问题,而不是在 Struts2 部分。尝试设置参数映射而不是字符串。

$("#accountListDiv").html(ajax_load).load(url, {'param1':value1, 'param2':value2},   function(){
    //alert('done');
});

2 如果您想使用 ajax 提交表单,请使用Jquery Form插件。

  $("#testform").ajaxSubmit({
      type: "POST",
      success: function(data) {
        $('#accountListDiv').html(data);
        alert('Yeh-ha!');        
      },
      error: function(request, textStatus, errorThrown) {
        alert('Oops');
      }}
  );
于 2012-04-24T05:48:31.323 回答
0

我在 JQuery 和 Struts2 中使用了以下内容:

<script>

    function bindDivFormSubmission(theDiv) {

        /* get the form from the div and unbind it */
        var theForm = theDiv.find('form');
        theForm.unbind();

         /* attach a submit handler to the form */
        theForm.submit(function(event) {

            /* stop form from submitting normally */
            event.preventDefault(); 

            var url = theForm.attr( 'action' ),
                formData = theForm.serialize();

            /* Send the data using post and put the results in a div */
            $.post( url, formData,
              function( data ) {
                  theDiv.html( data );
                  bindDivFormSubmission(theDiv);
              }
            );

        });

    }

    var accountListDiv = $("#accountListDiv");

    bindDivFormSubmission(accountListDiv);

</script>

您可能会注意到它递归调用“bindDivFormSubmission(theDiv);” 更换div后。这是因为在我的使用中,div 被替换为需要绑定的另一种形式。

于 2012-04-29T22:21:33.640 回答