从JavaScript

时间:2017-06-18 01:37:41

标签: javascript php

我试图从我的Javascript代码中获取PHP数据。这应该显示在dayta div id中。我最终获得的是undefined而不是期望的结果(在本例中是我的JSON文件中的firstname)。我不确定为什么会这样。

我的 JavaScript 代码:

window.onload = function(){
    var http = new XMLHttpRequest();
    http.onreadystatechange = function(){
        if (http.readyState == 4 && http.status == 200){
            var dayta = document.getElementById('datadisplay');
                dayta.innerHTML = http.response.firstname;
        }
    }
    http.open("GET", "myphpfile.php", true);
    http.send();
}

我的 PHP 代码(myphpfile.php):

<?php   
    $content = file_get_contents('somejsonfile.json');
    print_r($content);
    $dbcon->close();
?>

包含的PHP代码只是我代码的一部分,但它包含与我的问题相关的所有部分。

$content输出一个JSON文件,就像它指向的那样。如果我回复$content,我可以验证内容是否按预期流出。

因此,问题很可能出在我的JavaScript代码上。但我无法确切地指出什么是错的。

我的 JSON 文件(somejsonfile.json):

{"firstname": "Ki ki ki ma ma ma"}

我理解接近这个特定示例的最明显的方法是让JavaScript文件到达JSON文件。但是,因为我正在尝试在我的生产代码中保护我的JSON文件的路径,所以我正在尝试这种方法。

2 个答案:

答案 0 :(得分:1)

确保使用JSON.parse获得JSON响应。这是一个快速的解决方案。我试过了,效果很好!

window.onload = function(){
    var http = new XMLHttpRequest();
    http.onreadystatechange = function(){
        if (http.readyState == 4 && http.status == 200){
            var dayta = document.getElementById('datadisplay');
            var data = JSON.parse(http.responseText);
            dayta.innerHTML = data.firstname;
        }
    }
    http.open("GET", "myphpfile.php", true);
    http.send();
}

答案 1 :(得分:0)

请检查此代码;

<?php   
    $content = file_get_contents('somejsonfile.json');
    echo(json_encode($content));
?>

如果你真的看到数组,那么

global i

如果要在json文件中查询,可以使用json_decode函数转换数组并推送或删除数组项,然后使用json_encode。