2010-07-19 61 views
1

我有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數據。然而,保存(沒有黑客)顯示'中止'

+0

道歉的錯字︰Save()是SaveRule() – Rahul 2010-07-19 10:51:12

回答

2

你可以檢查與正常的按鈕...通過更改其類型=「按鈕」?

+0

通過更改類型爲「按鈕」解決。 謝謝:) – Rahul 2010-07-19 13:37:01