Search code examples
javascriptphpjsonajaxxmlhttprequest

Getting data as JSON from a PHP file on the server


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";

Solution

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