[英]Can't display JSON on page
我一直在嘗試從連接到我的數據庫的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文件和stringify並嘗試顯示它。
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
t指定您關心的對象。 因此,上面例子中的[0]
挑出第一個對象。
另一個想法......目前,如果你的PHP沒有找到任何結果,它將發回一些不符合你期望的格式的東西。 考慮將列表包裝在具有狀態的對象中......
{
"Success": true,
"Results": [{...}, {...}]
}
或者讓PHP腳本返回一個不同的HTTP代碼來指示失敗(這里404似乎合適)
為了將來的參考,JSON.stringify正好相反 - 它需要一個復雜的對象並將其轉換為 Json
您正在解析整個XMLHttpRequest對象
var obj = JSON.parse(request);
嘗試只使用響應體
var obj = JSON.parse(request.responseText);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.