Ajax с Jquery - обратный вызов не выполняется - PullRequest
0 голосов
/ 21 марта 2012

Я пробовал так много вещей, не могу понять это, я использую этот код, и я знаю, что запуск работает, потому что сценарий, к которому он подключается, вставляет некоторую информацию в БД, но обратный вызов никогда не запускается.

<script type="text/javascript">
$(document).ready(function() {
    $(document.body).on('click', "#reply_submit", function() {
            var formData = $('#reply').serialize();


            $.post("newpost.php",formData, function(data){
                    alert("hi");
             }, "json");
    });

});

Идентификатор моей формы - «ответить», а кнопка, которую я использую для отправки, - «ответить-отправить», просто чтобы убедиться, что все понятно.

Это также не сработает, если я уберу эту последнюю вещь "json" между прочим.

Ответы [ 3 ]

1 голос
/ 21 марта 2012

При нажатии форма также отправляется стандартным способом.Измените ваш обработчик кликов следующим образом:

$(document).on('click', "#reply_submit", function(e) {
  e.preventDefault(); // prevent the default submit event
  var formData = $('#reply').serialize();
  // ...
});

Хотя я думаю, что document.body должен быть допустимым узлом для переноса в jQuery, я также изменил его на более часто используемый document.

На этой ноте, если форма никогда не будет уничтожена событием Ajax или другой модификацией DOM, вы можете привязаться к #reply вместо document (или body).

1 голос
/ 21 марта 2012

Я просто предполагаю, что вы хотите отправить форму без перезагрузки всей страницы. Исходя из этого предположения, следующий код будет служить цели.

$(document).ready(function(){

//on form submit event
$('form#reply').submit(function(){
    $.post('newpost.php',$(this).serialize(),function(){
        alert("Message or do something with the response data if you are expecting one");
    });

    //prevent default action
    return false;   
});

}); 

Пожалуйста, игнорируйте сообщение, если это не та функция, которую вы ищете в своем проекте.

1 голос
/ 21 марта 2012

Если вы читаете документы для jQuery.post () , это говорит об обратном вызове:

success (data, textStatus, jqXHR)
Функция обратного вызова, которая выполняется в случае успешного выполнения запроса.

Если вызов не вызывается, это означает, что запрос не был выполнен успешно.Вероятно, есть ошибка в newpost.php (через некоторое время после вставки данных, но до того, как она обычно завершится).

Вы также можете перехватить условия ошибки, используя длинную форму jQuery.ajax () вместо сокращенного сообщения:

$.ajax({
    url: 'newpost.php',
    data: formData,
    type: 'post',
    dataType: 'json',
    success: function(data, textStatus, jqXHR) {
        alert('success');
    },
    error: function(jqXHR, textStatus, errorThrown) {
        alert('error!');
    }
});
...