2010-07-19 80 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