使用jquery ajax加载页面

时间:2012-04-23 20:18:05

标签: jquery struts2

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

url是Struts2操作请求。

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

// serializeArray和serialize不起作用。 (可能是struts操作确实需要这些函数生成的格式的数据。有关此问题的更多见解将会有所帮助。)

如果是普通的HTTP请求,Struts2操作中的所有变量都将自动分配在JSP页面中输入的值。

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

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

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

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

3 个答案:

答案 0 :(得分:1)

我认为您的意思是使用serialize而不是serializeArray

答案 1 :(得分: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');
      }}
  );

答案 2 :(得分: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被另一个需要绑定的表单替换。