jQuery XMLHTTPRequest Ошибка 0 - PullRequest
0 голосов
/ 18 июня 2011

У меня есть CSS-модал, который всплывает, когда пользователь взаимодействует с некоторыми элементами HTML, которые заполняют скрытый ввод, затем они нажимают кнопку, которая вызывает POST для моего обработчика.

Все работало отлично, но внезапно я начал получать ошибку XMLHTTPRequest 0 каждый раз, когда нажималась кнопка отправки.

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

не находится в форме, поэтому ничего не отправляет. POST просто указывает на ./ajax/dothis/ (который по имени dothis является именем функции, которое переписывается в PHP).

Файл обработчика - это файл PHP, который выполняет некоторую логику и выплевывает JSON (для которого я добавил заголовок application / json).

Любая помощь будет высоко ценится. Внезапное возникновение этого действительно расстраивает.

Спасибо.

1 Ответ

1 голос
/ 18 июня 2011

Таким образом, вы используете AJAX в режиме «POST» для отправки информации на страницу вашего обработчика.Затем, после того, как вы запустите запрос, он выдаст ошибку?

Похоже, вы создаете свои собственные вызовы AJAX, а не используете какую-либо библиотеку js, такую ​​как jQuery.

Это определенно время для началаиспользуя «операторы отладочной печати», чтобы выяснить, где именно происходит сбой.

Внутри вашей AJAX-функции, которая помещает данные обратно в форму, попробуйте использовать «alert ('some debug message');";распечатать ваши входные значения на экране, чтобы вы могли увидеть, какое фактическое значение js извлекает из вашей страницы.

Также вы можете включить это в свой код:

http.onreadystatechange = function() 
{
    //Call a function when the state changes.

    // Ready State codes and their associated meanings
    //0 Uninitialized - open() has not been called yet.
    //1 Loading - send() has not been called yet.
    //2 Loaded - send() has been called, headers and status are available.
    //3 Interactive - Downloading, responseText holds the partial data.
    //4 Completed - Finished with all operations.

    // There are also the status codes to work with too, to help you deduce errors.
    //200   Successfully completed
    //Every other status code is an error message of some type that will help you
    //deduce what is going wrong.

    if(http.readyState == 0)
    {
        alert("Uninitialized, Open Not Called yet");
    }
    if(http.readyState == 1)
    {
        alert("Loading, Send Not Called yet")
    } 
    if(http.readyState == 2)
    {
        alert("Loaded, Send called, headers and status available");
    }
    if(http.readyState == 3)
    {
        alert("Downloading");
    }
if(http.readyState == 4 && http.status == 200) {
    alert(http.responseText);
}
    else if(http.readyState == 4 && http.status != 200)
    {
         alert("Request completed with this error number: " + http.status);
    }
}

Вот ссылка на документацию w3.org по инфраструктуре AJAX, она довольно техническая, но очень всеобъемлющая, поскольку является стандартом.

w3.org Ajax-запросы

Таким образом, чтобы подвести итог, проверьте все ваши входные данные динамически, и убедитесь, что Javascript правильно извлекает ваши значения, затем проверьте состояние и статус AJAX, чтобы убедиться, что он получил его правильно, затем перейдите к попытке отладки методов в вашем скрипте обработчика.,Это, очевидно, не является ответом на вашу проблему, но, надеюсь, приблизит вас к ее решению.Не стесняйтесь публиковать ваши результаты отладки обратно в эту ветку, чтобы я или другие могли помочь вам.

С уважением,

H

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...