簡體   English   中英

無法在頁面上顯示JSON

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM