jQuery POST上不完整的回调执行

时间:2010-07-19 10:32:54

标签: jquery jquery-callback

我有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()">

问题:Save中的回调函数根本没有被调用,页面会自动刷新。在AJAX调用期间,要保存的对象将保存到数据库中。但是,回调函数中的代码不会被执行。

我被建议使用以下黑客来使其正常工作

<button type="submit" onclick="javascript:Save(); return false;">

我被告知'返回假;'停止页面自动重新加载。但是,这没有意义,因为我的删除,不应该重新加载,没有这个黑客来阻止它重新加载。

使用FireBug后,Delete显示POST成功并返回JSON数据。然而,Save(没有黑客)显示'中止'

1 个答案:

答案 0 :(得分:2)

你能用普通按钮检查......改变它的类型=“按钮”吗?