使用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');
}}
);
我相信你的意思是使用serialize
,而不是serializeArray
我试过使用它,但没有奏效。这就是为什么,我也想知道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被替换为需要绑定的另一个表单。
你的第一个建议是有效的,但我不想这样做,因为页面中有大量的参数。第二个是刷新页面(也不更新testform div)。可能是我无法正确嵌入它。无论如何,我会继续努力,让你更新。 – JProgrammer 2012-04-25 18:30:14
看起来像你的第一个解决方案是使用JQuery ajax将多个参数传递给struts应用程序的唯一方法。 – JProgrammer 2012-07-10 18:10:13