我有 2 个 js 方法,它们向服务器发送 AJAX 并相应地显示结果。
1)删除 - 回调时删除“隐藏”已删除的元素并且不刷新页面
function DeleteRule(ruleId) {
var deleteRuleAction = $('#delete-rule-action').val();
$.post(deleteRuleAction, { ruleId: ruleId }, function(data) {
if (data.Status == 'Success') {
alert(data.Messages[0]);
$('#rule-details-' + ruleId).fadeOut(500);
$('#div-rule-button-' + ruleId).fadeOut(500);
activeRuleId = null;
}
else
alert(data.Messages[0]);
}, 'json');
}
2) 保存 - 回调时保存需要刷新页面以显示新添加的元素以及现有元素
function SaveRule() {
var ruleId = $('#rule-id').val();
var saveOrUpdateRuleAction = $('#add-or-edit-rule-action').val();
$.post(saveOrUpdateRuleAction, { ruleId: ruleId }, function(data) {
if (data.Status == 'Success') {
alert(data.Messages[0]);
location.reload(true);
// This is supposed to reload the page after saving the element.
// But the page gets reloaded without display the alert on the previous line.
}
else
alert(data.Messages[0]);
}, 'json');
}
我将此保存功能称为:
<button type="submit" onclick="javascript:Save()">
问题:保存中的回调函数根本没有被调用,页面自动刷新。在 AJAX 调用期间,要保存的对象被保存到数据库中。但是,回调函数中的代码不会被执行。
有人建议我进行以下黑客攻击以使其工作
<button type="submit" onclick="javascript:Save(); return false;">
我被告知'return false;' 阻止页面自动重新加载。但是,这没有任何意义,因为我的删除,不应该被重新加载,没有这个黑客来阻止它重新加载。
使用 FireBug 后,Delete 显示 POST 成功并返回 JSON 数据。但是保存(没有破解)显示“中止”