我有2個js方法,它們會向服務器發送AJAX帖子並相應地顯示結果。不完整的jQuery POST回調執行
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;">
有人告訴我,「返回false;」停止頁面自動重新加載。然而,這是沒有意義的,因爲我的刪除,不應該重新加載,沒有這種黑客來阻止它重新加載。
使用FireBug時,刪除顯示一個成功的POST和返回的JSON數據。然而,保存(沒有黑客)顯示'中止'
道歉的錯字︰Save()是SaveRule() – Rahul 2010-07-19 10:51:12