我想使用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插件的解决方案)。
答案 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被另一个需要绑定的表单替换。