我一直在尝试从连接到数据库的 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/