使用jquery加载页面ajax

使用jquery加载页面ajax

问题描述:

我想使用jQuery ajax加载页面的一部分。使用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插件的解决方案)。

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'); 
     }} 
); 
+0

你的第一个建议是有效的,但我不想这样做,因为页面中有大量的参数。第二个是刷新页面(也不更新testform div)。可能是我无法正确嵌入它。无论如何,我会继续努力,让你更新。 – JProgrammer 2012-04-25 18:30:14

+0

看起来像你的第一个解决方案是使用JQuery ajax将多个参数传递给struts应用程序的唯一方法。 – JProgrammer 2012-07-10 18:10:13

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

+0

我试过使用它,但没有奏效。这就是为什么,我也想知道struts2如何解析输入数据并相应地设置每个变量的值。 – JProgrammer 2012-04-23 21:37:51

我已经使用了下面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被替换为需要绑定的另一个表单。