我的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
为空。
答案 0 :(得分:0)
只需检查两台机器上的php配置。就像在我的机器上一样,$ text将在我的提供者上运行,由于安全设置,我必须像$ _GET ['text']一样编写。 PHP配置可以让您了解什么是错误的,或者需要安装哪些软件包。