PHP aramalar AJAX hata ayıklamak için en iyi yolu nedir?

5 Cevap php

Ben yeni bir proje üzerinde küçük bir işlevi ayıklama sefil bir zaman yaşıyorum.

Esasen benim mod_rewrites maç daha regex yazma ağrımıyor böylece kullanıcı AJAX kullanarak değilim "userfFunctions.php" olarak adlandırılan benim sunucuda benim günlüğüne bir AJAX çağrısı üzerinden komut aracılığı ile oturum yaşıyorum. PHP perde arkasında çalışıyor çünkü ben veri akışı bozulur ediliyor nerede bulma yolu yok gibi, ben hissediyorum benim Post verileri sadece kalıplar düz dışarı ve sanki Neyse, her öylesine sık sık, öyle görünüyor. Btw Bu fonksiyon, bir gün için 19 saat çalışmaktadır.

İşte javascript fonksiyonu şudur:

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 tarafı:

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

here is my awesome response: alt text

5 Cevap

FirePHP :

FirePHP enables you to log to your Firebug Console using a simple PHP method call.

All data is sent via response headers and will not interfere with the content on your page.

FirePHP is ideally suited for AJAX development where clean JSON and XML responses are required.

Burada yazdığım bir minimalist uygulamasıdır:

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 . '|');
        }
    }
}

Sadece (güvenlik nedenleriyle) localhost üzerinde çalışır, ancak kolayca aşağıdaki kodu değiştirerek bunu değiştirmek böylece ben yazdım:

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

Ile:

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

Salınmaktır isteği bakmak, Chrome, Firefox için kundakçı eklentisi gibi bir şey, ya da Geliştirici Araçları kullanmayı deneyin.

Size dataType ayarı denedim "text"?

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

Ayrıca, bu senin PHP değiştirmek istiyorsunuz:

print_r($_POST);

Ben fark ettim:

//<-- redirects to userFunctions.php

When you do a redirect ( header("Location: "); ) you'll lose your $_POST and $_GET data. (If you're referring to a url rewrite (with mod_rewrite) you should receive the data.)

Ama bu 19hr belirti açıklamıyor.

Böyle bir şey ile $ _POST dizi kendisi kontrol deneyebilirsiniz:

var_dump($_POST);

See if the array is even being populated at all and then work from there. Using firebug, you can also confirm if the AJAX post is truly sending data (check the console or net tabs).