Необходимо добавить замыкание, которое реагирует на завершение процесса загрузки документа.
page_request.onreadystatechange = function() {
if(page_request.readystate == 4) {
// data handling here
}
}
Как уже указывалось, использование jQuery намного облегчит задачу.
Редактировать: чтобы уточнить, ваш AJAX-вызов проверяет состояние соединения (request.status
), но не статус загрузки (request.readystate
). Возможно, ваш документ загружен не полностью.
Вот справка по API XMLHTTPRequest W3.org: http://www.w3.org/TR/XMLHttpRequest/.
Edit2: Кстати, элемент <iframe>
решит вашу проблему с гораздо меньшим количеством кода.
Редактировать 3: Код
function ajaxinclude(url) {
//...
page_request.open('GET', url, false) //get page synchronously
//<> add onreadystatechange handler
page_request.onreadystatechange = function() {
if(page_request.readystate === 4) {
if(page_request.state === 200) {
//call function on success
writecontent(page_request.responseXML)
}
}
}
page_request.send(null)
}
Некоторые дополнения:
- если вы поместите свой вызов ajax в
<HEAD>
, вам нужно либо создать элементы dom, к которым вы хотите добавить данные, поскольку они недоступны во время выполнения среды выполнения (что может привести к ошибке dom); или вам нужно добавить обработчик события загрузки на дом.
- Синхронные вызовы неправильно реализованы в некоторых браузерах, и это также может привести к ошибкам.