Как протестировать AJAX post с помощью jQuery

#jquery #ajax

#jquery #ajax

Вопрос:

У меня есть следующая функция, которая открывает диалоговое окно jQuery UI с предупреждением об удалении записи. Все работает нормально, кроме POST с AJAX. Я получаю ответ «успешно», но я не верю, что попал на страницу .php, которая должна выполнить запрос. Я что-то здесь упускаю?

 var $dialog = $("#dialog").dialog({ autoOpen: false, resizable: false, modal: true });

    $(".delProj").click(function(){ 
        var delURL = $(this).attr("href").split("#");
        var projID = delURL[1];
        $dialog.dialog("open");
        $("#dialog").dialog({
            buttons: {
                "Yes, delete this test": function() {
                    $.ajax({
                        type: "POST",
                        url: "http://www.example.com/inc/db_actions.php",
                        data: "op=DeleteProjectamp;delete=" projID,
                        success: function(){
                          //  alert( "Test Project deleted successfully." );
                          $("#" projID).remove();
                        }
                    });
                    $(this).dialog("close");
                },
                "No, keep it.": function() {
                    $(this).dialog("close");
                }
            }
        });
    });
  

Комментарии:

1. Почему вы не верите, что это не публикация на странице? Вы всегда можете выполнить эхо из php-скрипта. Вы также можете использовать firebug для обратной проверки сообщения и ответа.

2. Глядя на параметр URL вашего ajax-запроса, вы уверены, что попали на страницу php в том же домене, откуда загружается страница? В противном случае междоменная политика приведет к сбою вашего вызова ajax.

Ответ №1:

Сделайте так, чтобы ваша php-страница называлась echo something

PHP

 echo 'hello world';
  

Javascript

Добавьте возвращаемое значение обратного вызова (здесь data ) и попробуйте отобразить его с помощью js.

[..]

 success: function(data){
    alert(data);
}
  

[…]

Комментарии:

1. Да, нет необходимости в каких-либо сложных тестах. Это будет сделано просто отлично и сведет к минимуму вероятность возникновения любых посторонних ошибок.

Ответ №2:

Обычно я отправляю некоторую форму ответа через данные в формате JSON, чтобы мои AJAX-запросы знали, выполнили ли они то, что намеревались сделать. Что-то вроде:

Скрипт:

 $.ajax({
    type: "POST",
    url: "http://www.mydomain.com/inc/db_actions.php",
    data: "op=DeleteProjectamp;delete=" projID,
    success: function(data){
        if(data.success == true)
        {
            $("#" projID).remove();
        }
});
  

PHP:

 // do something
echo json_encode(array('success'=>true));
  

Редактировать:

Также обычно полезно отслеживать ваши ошибки ajax:

 $.ajax({
    type: "POST",
    url: "http://www.mydomain.com/inc/db_actions.php",
    data: "op=DeleteProjectamp;delete=" projID,
    success: function(data){
        if(data.success == true)
        {
            $("#" projID).remove();
        }
    },
    error: function(){
        alert('something bad happened');
    }
});
  

Комментарии:

1. и если вы собираетесь пойти на такие большие проблемы, стоит отметить, что вы действительно хотите получить параметры ошибки из jQuery, а не отбрасывать их 😉

2. @drachenstern: абсолютно верно — но тогда вы хотели бы перейти к другому обсуждению о настройке правильных заголовков для 500 ошибок и т.д., Но это другое обсуждение 😉