我正在使用AJAX
调用从服务器请求PHP
文件。 PHP
文件正在保存一些对象。 JSON.parse()
用于将结果转换为JavaScript
对象。所以问题是在运行程序后我在浏览器控制台中看到以下错误:
Uncaught SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at XMLHttpRequest.xmlhttp.onreadystatechange (index.php:15)
我不知道为什么程序不能正常工作,尽管我的Apache服务器和PHP运行正常。 我正在进行的计划:
的index.php:
<p id="demo"></p>
<script>
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.name;
}
};
xmlhttp.open("GET", "demo_file.php", true);
xmlhttp.send();
</script>
demo_file.php:
<?php
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";
答案 0 :(得分:4)
您可以使用json_encode()
函数在
<?php
$myObj = new stdClass();
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";
echo json_encode($myObj);
答案 1 :(得分:1)
也许您有一个警告,$ myObj未初始化:
<?php
header('Content-type: text/json');
$myObj = new stdClass;
$myObj->name = "John";
$myObj->age = 30;
$myObj->city = "New York";
echo json_encode($myObj);
答案 2 :(得分:0)
尽管这个问题是一年前提出的,但是如果我是对的话,仍然不能正确回答。我遇到了同样的问题,并通过提供正确的文件路径解决了它。
解决方案::如果您的客户端代码和服务器代码位于同一文件夹中,则从逻辑上讲,无需提供根文件夹的路径,但是在这种情况下,您必须提供根文件夹。例如:如果client.php和demo_file.php文件位于同一文件夹页面 那么解决方案将是:
<p id="demo"></p>
<script>
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.name;
}
};
xmlhttp.open("GET", "Pages/demo_file.php", true);
xmlhttp.send();