2012-03-21 4 views
0

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

<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"); 
    }); 

});

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

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

+0

Какое сообщение об ошибке вы получаете? – Asdfg

+0

проверить, какую ошибку вы получите в консоли ... –

+0

У вас есть URL-адрес, который мы видим? Если вы используете ошибку огня, вы получаете какие-либо ошибки? Какую обратную связь вы видите на вкладке «Сеть»? –

ответ

1

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

успеха (данные, 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!'); 
    } 
}); 
+0

Я думаю, что так оно и было, мой фоновый скрипт, похоже, внезапно выкидывал некоторые ошибки. Честно говоря, сейчас это немного размывается, но да, я думаю, это была проблема: | – Cocorico

1

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

$(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

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

$(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; 
}); 

}); 

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

Смежные вопросы