我有使用AJAX处理用户数据的JSP Servlet代码。在AJAX的success
函数中,我想向用户显示一条成功消息,并且还希望清除表单中的所有字段,因此我重新加载页面。但是,当我重新加载时,警报消失了。解决方案是什么?
$.ajax({
url: '../Groups',
data: {
"mode": "create_assign",
"name": name,
"desc": desc,
"status": status,
"add": listadd
},
type: 'POST',
success: function(response) {
$.notify({
message: "Created group successfully.",
}, {
type: "success"
});
location.reload();
},
error: function(jqXHR, textStatus, message) {
$.notify({
message: "System Error: Please try again or contact system admin.",
}, {
type: "danger"
});
},
complete: function() {
$('.overlay').hide();
}
});
答案 0 :(得分:1)
发出AJAX请求后重新加载页面是相当多余的。它使AJAX请求的整个要点变得毫无意义。
如果您只想在提交后清除表单中的字段,则可以手动执行以下操作:
$select = Mage::app()->getLayout()->createBlock('core/html_select');
$select->setData(array(
'name' => $name,
'class' => $class,
'id' => $id,
'aria-required' => $ariaRequired //doesn't work
));
或者,您可以将success: function(response) {
$.notify("Created group successfully.", "success");
$('#yourForm input').val('');
},
重置为其初始状态:
form
请注意,以上示例使用了对success: function(response) {
$.notify("Created group successfully.", "success");
$('#yourForm').trigger('reset');
},
的较为简短的速记,如documentation
答案 1 :(得分:0)
或者代替重新加载页面,您可以显示成功消息,然后获取表单输入并清除它们,如下所示:
$('#yourForm').each(function(){
this.reset();
});
答案 2 :(得分:-1)
如Chris所述,它是多余的,但是您是否考虑过使用setTimeout()?
例如,您可以这样做:
function successFunction(response) {
$.notify({ message: "Created group successfully." }, { type: "success" });
setTimeout(location.reload(), 4000); // time in milliseconds
}
,然后在您的主要ajax调用中添加:
success: successFunction(response)