Что лучший способ состоит в том, чтобы отладить Ajax к вызовам PHP?

У меня есть скудное время, отлаживая одну небольшую функцию на моем новом проекте.

По существу я сделал, чтобы пользователь вышел из системы через вызов Ajax к моему журналу сценарий на моем сервере, названном "userfFunctions.php", я использую Ajax так, чтобы я не страдал от головной боли записи большего количества regex для соответствия моему mod_rewrites. Так или иначе, время от времени, кажется, как будто мои данные Сообщения просто утончаются, умирает и так как PHP работает негласно, я чувствую, что у меня нет способа узнать, где поток данных разрушается. BTW Эта функция работает 19 часов дня.

Вот функция JavaScript:

function logOut(){
    var data = new Object;
    data.log_out = true;
    $.ajax({
        type: 'POST',
        url: 'http://www.mydomain.com/User_Validator', //<-- redirects to userFunctions.php
        data: data,
        success: function(data) {
        alert(data); // <-- a response is triggered but with no response data!
        }
    });
}

php сторона:

if(isset($_POST['log_out'])){
     echo 'alert this!';
}

вот мой потрясающий ответ: сопроводительный текст http://img517.imageshack.us/img517/6520/screenshot20100517at443.png

11
задан Howard Zoopaloopa 17 May 2010 в 23:46
поделиться

5 ответов

FirePHP :

FirePHP позволяет войти в свой Консоль Firebug с использованием простого PHP вызов метода.

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

FirePHP идеально подходит для AJAX. разработка, где чистый JSON и XML ответы обязательны.

Вот минималистичная реализация, которую я написал:

function FirePHP($message, $label = null, $type = 'LOG')
{
    static $i = 0;

    if (headers_sent() === false)
    {
        $type = (in_array($type, array('LOG', 'INFO', 'WARN', 'ERROR')) === false) ? 'LOG' : $type;

        if (($_SERVER['HTTP_HOST'] == 'localhost') && (strpos($_SERVER['HTTP_USER_AGENT'], 'FirePHP') !== false))
        {
            $message = json_encode(array(array('Type' => $type, 'Label' => $label), $message));

            if ($i == 0)
            {
                header('X-Wf-Protocol-1: http://meta.wildfirehq.org/Protocol/JsonStream/0.2');
                header('X-Wf-1-Plugin-1: http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3');
                header('X-Wf-1-Structure-1: http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1');
            }

            header('X-Wf-1-1-1-' . ++$i . ': ' . strlen($message) . '|' . $message . '|');
        }
    }
}

Я написал ее так, чтобы она работала только на localhost (из соображений безопасности), но вы можете легко изменить это, заменив следующий код:

if (($_SERVER['HTTP_HOST'] == 'localhost') && (strpos($_SERVER['HTTP_USER_AGENT'], 'FirePHP') !== false))

на:

if (strpos($_SERVER['HTTP_USER_AGENT'], 'FirePHP') !== false)
9
ответ дан 3 December 2019 в 06:20
поделиться

Попробуйте использовать что-нибудь вроде плагина FireBug для Firefox или инструментов разработчика в Chrome, чтобы просмотреть отправляемый запрос.

8
ответ дан 3 December 2019 в 06:20
поделиться

Вы пытались установить dataType на «текст» ?

function logOut(){
    var data = {
        "log_out" : true
    };
    $.ajax({
        type: 'POST',
        url: 'http://www.mydomain.com/User_Validator',
        data: data,
        success: function(data) {
            alert(data);
        },
        dataType : 'text'
    });
}

Кроме того, я бы изменил ваш PHP на этот:

print_r($_POST);
2
ответ дан 3 December 2019 в 06:20
поделиться

Я заметил:

//<-- redirects to userFunctions.php

Когда вы выполните перенаправление (header ("Location:");), вы потеряете свои данные $ _POST и $ _GET. (Если вы имеете в виду URL rewrite (с mod_rewrite), вы должны получить данные.)

Но это не объясняет 19-часовой симптом.

0
ответ дан 3 December 2019 в 06:20
поделиться

Вы можете попробовать проверить сам массив $_POST, сделав что-то вроде этого:

var_dump($_POST);

Посмотрите, заполняется ли массив вообще, а затем работайте дальше. Используя firebug, вы также можете проверить, действительно ли AJAX-пост отправляет данные (проверьте консоль или вкладку net).

0
ответ дан 3 December 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: