无法从服务器上的 PHP 文件中获取 JSON 格式的数据

Posted

技术标签:

【中文标题】无法从服务器上的 PHP 文件中获取 JSON 格式的数据【英文标题】:Cannot get data as JSON from a PHP file on the server 【发布时间】:2017-11-21 14:47:33 【问题描述】:

我在服务器上有一个数据库,其中包含一个表customers 和列names。我想向我请求customers 表中的前两条记录的服务器发出请求。运行程序后,浏览器无法显示记录,显示未定义。看下图。

.php:

<?php

header("Content-Type: application/json; charset=UTF-8");
$obj = json_decode($_GET["x"], false);

$conn = new mysqli("127.0.0.1", "abc", "def", "mydatabase");
$result = $conn->query("SELECT names FROM " . $obj->table . " LIMIT " . $obj->limit);
$outp = array();
$outp = $result->fetch_all(MYSQLI_ASSOC);

echo json_encode($outp);
?>

.html:

    <p id="demo"></p>

<script>
var obj, dbParam, xmlhttp, myObj, x, txt = "";
obj =  "table":"customers", "limit":2 ;
dbParam = JSON.stringify(obj);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() 
    if (this.readyState == 4 && this.status == 200) 
        myObj = JSON.parse(this.responseText);
        for (x in myObj) 
            txt += myObj[x].name + "<br>";
        
        document.getElementById("demo").innerHTML = txt;
    
;
xmlhttp.open("GET", "demo_file.php?x=" + dbParam, true);
xmlhttp.send();

</script>

【问题讨论】:

查看浏览器的开发者控制台,了解 Ajax 请求的响应详情。 【参考方案1】:

您必须在 js 的循环中使用 names 而不是 name 的对象,因为在您的选择查询中,您有 names 列并且结果具有 names 属性。

<p id="demo"></p>

<script>
    var obj, dbParam, xmlhttp, myObj, x, txt = "";
    obj =  "table":"customers", "limit":2 ;
    dbParam = JSON.stringify(obj);
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function() 
        if (this.readyState == 4 && this.status == 200) 
            myObj = JSON.parse(this.responseText);
            console.log(myObj)
            for (x in myObj) 
                txt += myObj[x].names + "<br>";
            
            document.getElementById("demo").innerHTML = txt;
        
    ;
    xmlhttp.open("GET", "demo_file.php?x=" + dbParam, true);
    xmlhttp.send();

</script>

【讨论】:

哈梅谷,你这摇滚!简单的错误,我无法检测到。感谢它现在工作。

以上是关于无法从服务器上的 PHP 文件中获取 JSON 格式的数据的主要内容,如果未能解决你的问题,请参考以下文章

jQuery json/jsonp 不获取 php 服务器上的项目

无法解析从 iOS 中的 PHP 获取的 JSON

为啥 PHP 无法从 Js FormData fetch 中获取 $_POST 数据?

无法从我的网络服务器读取本地服务器上的 json 文件

无法从 php 脚本获取 JSON,但可以从 file.json 获取

Apache zeppelin 无法从 Amazon S3 笔记本 json 文件中获取 URL