2014-11-25 4 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() , запрос не завершается, даже если данные извлекаются, то есть браузер переходит в неопределенное состояние загрузки после извлечения данных.

Текст статуса, отправленный на обратный вызов, читает «успех», поэтому я предполагаю, что ошибка в настройке стороны ajax отсутствует.

Я использую jQuery 1.11.1 и node.js 0.13.0.

Что может быть причиной этого?

ответ

0

document.write() автоматически вызывает document.open(), которые в основном очищает ваш текущий документ (источник: MDN), так что, вероятно, браузер не имеют достаточно времени, чтобы закрыть соединение XHR в результате в «неопределенном состоянии загрузки». Вызов document.close() впоследствии должен устранить проблему.

Но прежде всего, обратите внимание, что после того, как ваша веб-страница закончила загрузку, вы никогда не должны использовать document.write (и я думаю, это ваш случай) и it's generally considered to be a bad practise.

+0

Действительно! Добавление 'document.close()' после того, как запись избавилась от неопределенного состояния загрузки. Я просто использовал 'document.write()', чтобы быстро проверить, правильно ли передавались данные или нет, и столкнулся с вышеупомянутой проблемой в процессе, поэтому просто стало любопытно. Я использую 'jQuery.html()' в фактическом файле. Спасибо! – galactocalypse

+0

Отлично. Я обновил свой ответ, поэтому он ясно говорит о том, что вызов 'document.close()' решает проблему. – lukaszfiszer

Смежные вопросы