dounou9751
dounou9751
2017-06-17 22:27

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

已采纳

I am using AJAX call to request the PHP file from the server. The PHP file is holding some objects. JSON.parse() is being used to convert the result into a JavaScript object. So the problem is after running the program I see the following error in the browser console:

Uncaught SyntaxError: Unexpected end of JSON input
at JSON.parse (<anonymous>)
at XMLHttpRequest.xmlhttp.onreadystatechange (index.php:15)

I have no idea why the program is not working, although my Apache server, and PHP are running fine. The program I am working on:

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条回答

  • dongzouqie4220 dongzouqie4220 4年前

    Maybe you have a warning that $myObj is not initialized:

    <?php
    header('Content-type: text/json');
    $myObj = new stdClass; 
    $myObj->name = "John";
    $myObj->age = 30;
    $myObj->city = "New York";
    echo json_encode($myObj);
    
    点赞 评论 复制链接分享
  • douwen3127 douwen3127 4年前

    You can build json in php with json_encode() function:

    <?php
    
    $myObj = new stdClass(); 
    $myObj->name = "John";
    $myObj->age = 30;
    $myObj->city = "New York";
    
    echo json_encode($myObj);
    
    点赞 评论 复制链接分享
  • dougui4325 dougui4325 3年前

    Although this question is asked 1 year ago but still not answered correctly if I am right. I was facing same issue and solved it by providing correct path to file.

    Solution: If your client code and server code are in the same folder, logically there is no need to give path of the root folder, but in this case you have provide root folder. For example: if you client.php and demo_file.php files are in the same folder Pages then the solution will be:

    <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();
    
    点赞 评论 复制链接分享