PHP boş json dize döndürür?

1 Cevap php

Benim html sayfası PHP için bir ajax isteği (POST) gönderir, PHP bir json nesnesi yankı.

Kodu test edilmiş ve benim geliştirme görünümü iyi çalıştı olmuştur.

Onlar bir VPS sunucu barındırma yüklenir Ancak, sonra, iade json dize (Ben responseText görüntülemek için tepki fonksiyonunda () uyarısı kullanılan ve boş olduğunu öğrendim) boştur.

sorun hakkında herhangi bir fikrin var mı?


Ben burada yeniyim. Bir yorum eklemek için nasıl çözemedim. (Lütfen bana bildirin.)

Ben bir dize döndürmek için PHP kodu değişti, işe yaradı. bu yüzden sorun json kodlama sonradır.

yeni test.php (çalıştı).

if(!isset($_POST['A'])||!isset($_POST['B']))
{
    echo "Failed";  
}
else
{
    echo "OK";  
}

HTML:

<html>
<head>
<title>Test Page</title>
<script type="text/javascript">

var NORMAL_STATE = 4;

function ajax_create_http()
{
    var xmlHttp = 0;
    try
    {
        xmlHttp=new XMLHttpRequest();
    }
    catch (e)
    {

        try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {

            return 0;
        }
        }
    }

    return xmlHttp;
}

var http_req_inst = ajax_create_http();

function sendHttpRequest(params) 
{   
    if( !http_req_inst ) return;

    http_req_inst.open('POST', 'test.php', true);
    http_req_inst.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    http_req_inst.onreadystatechange = handleHttpResponse;
    http_req_inst.send(params);

    alert("Request sent");
}       

function handleHttpResponse()
{
    if( !http_req_inst ) return;

    if (http_req_inst.readyState == NORMAL_STATE) 
    {
        alert(http_req_inst.responseText);

    }
}

</script>

</head>
<body>

    <div>
        <input type="button" value="click" onclick="sendHttpRequest('A=a&B=b')"/>
    </div>
</body>    
</html>

PHP:

<?php

if(!isset($_POST['A'])||!isset($_POST['B']))
{
    $rc = 1;
    $arr = array ('rc'=>(integer)$rc,'msg'=>'Testing failed.');
    echo json_encode($arr);     
}
else
{
    $rc = 0;
    $arr = array ('rc'=>(integer)$rc,'msg'=>'Testing passed.');
    echo json_encode($arr);     
}

?>

Ben test edildiğinde, responseText boş.

1 Cevap

Sadece her iki makinada php yapılandırmasını denetleyin. Gibi benim makine $ metin ben Güvenlik ayarları nedeniyle $ _GET ['text'] gibi yazmak zorunda benim sağlayıcısı üzerinde çalışacak. PHP yapılandırma size yanlış ne bir fikir verecektir, ya da ne paketler yüklü olması gerekmektedir.