我一直在尝试从连接到我的数据库的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","Specialization":"Voet","Branch":"Been","Interests":"Hoofd","Hospital":"OLVG","Email":"pietklaas@gmail.com","ProfilePicture":""}]
有了这个,我们使用以下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。
答案 0 :(得分:2)
当您从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
答案 1 :(得分:0)
您正在解析整个XMLHttpRequest对象
var obj = JSON.parse(request);
尝试仅使用响应主体
var obj = JSON.parse(request.responseText);