从服务器上的PHP文件获取数据作为JSON

时间:2017-06-17 22:27:53

标签: javascript php json ajax xmlhttprequest

我正在使用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";

3 个答案:

答案 0 :(得分:4)

您可以使用json_encode()函数在

中构建json
<?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();