2016-11-10 135 views
1

我想從noSQL數據庫解析一個字符串。有困難。 當您訪問的PHP文件它給了這樣的結果:從HttpRequest解析字符串到json/XML

[{"timestamp":"2016-11-07T09:48:30.335Z","Id":"d7ee735f16b5"}, 
{"timestamp":"2016-11-07T09:48:29.015Z","Id":"d7ee735f16b5"},  
{"timestamp":"2016-11-07T09:48:27.688Z","Id":"d7ee735f16b5"}, 
{"timestamp":"2016-11-07T09:48:27.085Z","Id":"d7ee735f16b5"}, 
{"timestamp":"2016-11-07T09:48:26.577Z","Id":"d7ee735f16b5"}] 

同樣的結果在控制檯的網絡中給出。

當我然後嘗試將響應字符串化時,它顯示爲空。

請任何人都可以幫助我訪問時間戳值。下面是當前的代碼:

var ajax = new XMLHttpRequest(); 
ajax.open("GET", url, true); 
ajax.responseType = 'json'; 
ajax.send(); 
var jsonResponse = JSON.stringify(ajax.response); 
document.getElementById('demo').innerHTML = jsonResponse; 

回答

0

最有可能的響應並沒有從服務器在這個例子返回呢。同時驗證一個id爲'demo'的元素確實存在於你的html文檔中。

添加事件偵聽器的AJAX對象:

ajax.onload = loadCompleted; 
ajax.onerror = onLoadError; 

然後創建一個函數來處理結果:

var jsonResponse = JSON.stringify(ajax.response); 
document.getElementById('demo').innerHTML = jsonResponse; 

完整的示例(每博日的評論更新):

var url = 'https://jsonplaceholder.typicode.com/posts/1'; 

function loadCompleted() { 
    console.log(ajax.response) 
    var jsonResponse = JSON.stringify(ajax.response); 
    document.getElementById('demo').innerHTML = jsonResponse; 
} 

function onLoadError() { 
    //handle error logic 
} 

var ajax = new XMLHttpRequest(); 
ajax.onload = loadCompleted; 
ajax.onerror = onLoadError; 
ajax.open("GET", url, true); 
ajax.responseType = 'json'; 
ajax.send(); 

查看https://jsfiddle.net/px3mxa4n/作爲一個工作示例。

+0

你有「readyState的」 VAR爲XMLHttpRequest對象的一部分,因此沒有必要對事件監聽... –

+0

這就是完美。謝謝 –

+1

謝謝@BozidarSikanjic。我更新了代碼以使用onload和onerror。這些更明確,表達意圖好一點。 – axlj

0

在繼續執行代碼之前,您不應該等待響應嗎?喜歡的東西:

ajax.onreadystatechange = function() { 
    if(ajax.readyState == 4 && ajax.status == 200) { 
     // do what you need like 
     var jsonResponse = JSON.stringify(ajax.response); // maybe JSON.parse and then iterate trough array of objects to create individual HTML elements? 
     // ....... 
    } 
}