Неполное выполнение обратных вызовов на jQuery POST - PullRequest
1 голос
/ 19 июля 2010

У меня есть 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;">

Мне сказали, что 'returnложный;'останавливает страницу от автоматической перезагрузки.Тем не менее, это не имеет смысла, так как мой Delete, который не должен быть перезагружен, не имеет этого хака, чтобы остановить его от перезагрузки.

После использования FireBug Delete показала успешный POST и возврат данных JSON.Однако Save (без взлома) показал 'abort'

1 Ответ

2 голосов
/ 19 июля 2010

Вы можете проверить с помощью обычной кнопки ... путем изменения ее типа = "кнопка"?

...