2014-11-25 41 views
0

所以我試圖從我的node.js服務器(使用express.js)通過jQuery.getJSON()獲取一些數據。即使在提取響應後,頁面仍然會加載

下面是相關代碼:

的test.html:

<script> 
$.getJSON('/test', function(data, status, xhr){ 
    document.write(data.message); 
    //console.log(data.message); 
}); 
</script> 

server.js:

app.get('/test', function(req, res){ 
    res.json({ message: 'Hello World' }); 
}); 

現在,只需使用console.log()當事情很好地工作,但是當一個document.write()即使提取數據,請求也不會完成,即在提取數據後瀏覽器進入無限期加載狀態。

發送到回調的狀態文本顯示'success',所以我猜測ajax側設置沒有錯誤。

我使用jQuery 1.11.1和node.js 0.13.0。

這可能是什麼原因造成的?

回答

0

document.write()自動調用document.open()基本上清除當前文檔(來源:MDN),所以大概的瀏覽器沒有足夠的時間來關閉導致「無限加載狀態」的XHR連接。之後致電document.close()應解決問題。

但首先請注意,在您的網頁加載完成後(我猜是你的情況)和it's generally considered to be a bad practise之後,請不要使用document.write

+0

確實!在寫入之後添加'document.close()'擺脫了不確定的加載狀態。我只是使用'document.write()'來快速測試數據是否正確傳輸 - 並且在這個過程中遇到了上述問題,所以只是好奇而已。我在實際的文件中使用'jQuery.html()'。謝謝! – galactocalypse 2014-11-25 03:06:24

+0

太好了。我更新了我的答案,所以它明確提到調用'document.close()'解決了這個問題。 – lukaszfiszer 2014-11-25 12:46:18

相關問題