2016-07-14 22 views
0

全面披露:總小白製作一個XMLHttpRequest到本地JSON文件安慰日誌數據

我有一個文件,「data.js」,它包含的數據,看起來像這樣:

[{ 
    "Course": "Math 101", 
    "Classroom": "Granby Hall" 
}] 

我有一個服務器上的文件,目前使用的快遞主辦我的應用程序,看起來像這樣:

app.get('/data.js',function(req,res) { 
    res.send('data.js'); 
}); 

在我的主要JS頁面,在這裏我做我的請求時,它看起來就像個是:

var x = new XMLHttpRequest(); 
x.open('GET','data.js', true); 
x.onreadystatechange = function(){ 
if(x.readyState == 4){ 
    console.log(x.responseText); 
    callback(JSON.parse(x.responseText)); 
} 
}; 
x.send(); 

function callback(resp){ 
console.log(resp); 
} 

當我打開devtools和檢查,控制檯也記錄(不串引號)「data.js」,然後下一行是一個錯誤: 「未捕獲的SyntaxError:意外的標記d在位置0的JSON中「

我測試了它,更改了我在服務器響應中發送的文件名,這就是它所談論的內容。所以,我真的很困惑。發生了什麼?我想從控制檯中的data.js文件中查看數據作爲對象。但它看起來好像只是試圖發送文件名,然後它不能解析它,因爲它實際上是發送文件名。

回答

0

對我而言,你的代碼完全按照你所希望的那樣工作。您是否在控制檯中收到錯誤消息?

我確實在錯誤的文件夾中有data.js,不得不改變我的路徑(lol),但除此之外它運行時會將json輸出到控制檯。

+0

是的,我有兩個控制檯錯誤: 無法加載資源:服務器與404狀態(未找到)HTTP迴應://本地主機:3000/data.json 和「未捕獲的SyntaxError: JSON中位置爲0的意外令牌C「localhost /:1 – Fabian

+0

」是localhost:3000/data.json文件的位置? (在你的例子中你將它列爲data.js),如果文件是你指向的地方,它不應該用404響應。 –

+0

好吧,我解決了我的404問題,我把它作爲data.json而不是data.js,但現在我有一個錯誤,說: 未捕獲的SyntaxError:JSON在位置0的意外標記d localhots /:1 沒有線索,發生了什麼,早些時候它說意想不到的令牌C,現在它是D?!? – Fabian