使用jqueryajax加载页面

使用jqueryajax加载页面,jquery,struts2,Jquery,Struts2,我想使用jQueryAjax加载部分页面 url是Struts2操作请求 $("#accountListDiv").html(ajax_load).load(url, $("#testform").serializeArray(), function(){ //alert('done'); }); //serializeArray和serialize不工作。(可能是struts操作确实希望数据采用这些函数生成的格式。对此问题的更多见解将很有帮助) 在正常HTTP请求的情况下,Str

我想使用jQueryAjax加载部分页面

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插件的解决方案)。

我相信您的意思是使用
序列化
,而不是
序列化数组

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

$("#accountListDiv").html(ajax_load).load(url, {'param1':value1, 'param2':value2},   function(){
    //alert('done');
});
2如果您想使用ajax提交表单,请使用插件


我在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获取表单并解除绑定*/
var theForm=theDiv.find('form');
形式为unbind();
/*将提交处理程序附加到表单*/
表单提交(函数(事件){
/*阻止表单正常提交*/
event.preventDefault();
var url=form.attr('action'),
formData=theForm.serialize();
/*使用post发送数据,并将结果放入div中*/
$.post(url、formData、,
功能(数据){
html(数据);
提交表格(第四版);
}
);
});
}
var accountListDiv=$(“#accountListDiv”);
bindDivFormSubmission(accountListDiv);

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

我尝试过使用它,但它不起作用。这就是为什么,我也想知道struts2如何解析输入数据并相应地设置每个变量的值。您的第一个建议是有效的,但我不想这样做,因为页面中有大量参数。第二个是刷新页面(也不是更新testformdiv)。可能是我无法正确嵌入它。无论如何,我会继续尝试并让您不断更新。看来您的第一个解决方案是使用JQuery ajax将多个参数传递给struts应用程序的唯一方法。
<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>