javascript - 无法在页面上显示 JSON

标签 javascript php json

我一直在尝试从连接到数据库的 PHP 文件获取 JSON 代码,以便使用 XMLHttpRequest 在我的网站上显示,但我们无法拆分它们并显示它。

我们使用一个 php 文件 example.php 来执行以下操作:

function jsonFromQuery($result) {
    if (mysql_num_rows($result) > 0) {
        while($r = mysql_fetch_array($result, MYSQL_ASSOC)) {
            $json[] = $r;
        }
    } else {
        $json = "Table is empty";
    }

    return json_encode($json);
}

如果您打开 php 文件,将在网站上显示如下 json 代码:

[{"UserID":"2","Firstname":"Piet","Lastname":"Klaas","Age":"23","特化":"Voet","Branch ":"去过","兴趣":"Hoofd","医院":"OLVG","电子邮件":"pietklaas@gmail.com","个人资料图片":""}]

这样,我们使用以下 javascript 文件来请求此 php 文件并进行字符串化并尝试显示它。

var request = new XMLHttpRequest;
request.open('GET' , 'http://myurl.nl/example.php', false);
request.send(null);

if (request.status == 0)
    console.log(request.responseText);

var obj = JSON.stringify(request);
var firstname = obj.Firstname;
document.writeln(firstname);`

但是我得到了一个巨大的字符串,其中包括类型状态等。并且不知道如何将其拆分以单独显示。例如,页面上仅 Firstname = Piet。

最佳答案

当您从 PHP 获取数据时,它已经是字符串的形式了。您需要使用 JSON.parse() 将其转换为您可以使用的对象。尝试...

var obj = JSON.parse(request.responseText);
var firstname = obj[0].Firstname;
document.writeln(firstname);`

另请注意,您返回的 Json 是一个对象列表:[{...},{...},{...}],因此您可以不只是调用 .Firstname 因为您还没有指定您关心的对象。因此,上面示例中的 [0] 用来挑选第一个对象。

另一种想法...目前,如果您的 PHP 没有找到任何结果,它将返回一些不符合您期望的格式的内容。考虑将列表包装在具有状态的对象中...

{
    "Success": true,
    "Results": [{...}, {...}]
}

或者让 PHP 脚本返回不同的 HTTP 代码来指示失败(404 在这里似乎合适)

供将来引用,JSON.stringify 执行相反的操作 - 它接受一个复杂的对象并将其转换为 Json

关于javascript - 无法在页面上显示 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22657889/

相关文章:

javascript - 找出两个日期之间的差异

javascript - 如何在rails中保存多个复选框值?

javascript - 如何将键和零浮点值附加到对象数组中的对象? - JavaScript

php - 在 stream_get_contents() 调用 Multipart/Related 中传递公钥、私钥和 CA

json - 无法将 json 解码到对象

json - Angular Http get方法getById和getByName的区别

javascript - 提交表格并在不同的页面上阅读

javascript - editablegrid 设置用于渲染条形图的列

php - 循环遍历 Woocommerce 购物车项目以获取跟踪代码

javascript - 下载文件时在文件内容中获取类型 [object object],而不是使用 angular 7 的 blob