PHP返回空的json字符串?

时间:2009-11-21 04:48:46

标签: php ajax string

我的html页面向PHP发送一个ajax请求(POST),PHP回显一个json对象。

代码已在我的开发视图中经过测试并正常运行。

但是,在将它们上传到VPS托管服务器之后,返回的json字符串为空(我在响应函数中使用alert()来显示responseText并发现它是空的。)

关于这个问题的任何想法?


我是新来的。我还没想出如何添加评论。 (请告诉我。)

我更改了PHP代码以返回一个字符串,它工作正常。所以问题出在json编码之后。

test.php(工作)。

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

?>

当我测试时,responseText为空。

1 个答案:

答案 0 :(得分:0)

只需检查两台机器上的php配置。就像在我的机器上一样,$ text将在我的提供者上运行,由于安全设置,我必须像$ _GET ['text']一样编写。 PHP配置可以让您了解什么是错误的,或者需要安装哪些软件包。