Я изо всех сил пытаюсь заставить веб-мастера загрузить XML-файл из того же домена на стороне моей главной страницы, любая помощь будет принята с благодарностью.
function readXML(){
var xhr = new XMLHttpRequest(); //Only for FF
xhr.open("GET","../db/pointer.xml",true);
xhr.send(null);
xhr.onreadystatechange = function(e){
if(xhr.status == 200 && xhr.readyState == 4){
//Post back info to main page
postMessage(xhr.responseXML.getElementsByTagName("value").length);
}
}
Когда это выполняется в теге скрипта на главной странице, я получаю 3. При запуске через WebWorker FireBug дает мне
hr.responseXML is null
postMessage (xhr.responseXML.getElementsByTagName ("value"). Length);
В консоли FireBug запрос GET ответил
A value
Another Value
A third Value
Итак, ответ правильный, но я не могу понять, где что-то не так. Если я изменю responseXML на responseText, рабочий выводит
значение Другое значение Третье значение
Что правильно! почему скрипт не открывает его как XML-документ?
ОБНОВЛЕНИЕ
function readXML(){
var xhr = new XMLHttpRequest(); //Only for FF
xhr.open("GET","../db/pointer.xml",false);
xmlhttp.setRequestHeader('Content-Type', 'text/xml');
xhr.overrideMimeType('text/xml');
xhr.send(null);
xhr.onreadystatechange = function(e){
if(xhr.status == 200 && xhr.readyState == 4){
//Post back info to main page
postMessage(xhr.responseXML.getElementsByTagName("value").length);
}
}
При изменении setRequestHeader и overrideMimeType onreadystatechange никогда не срабатывает, независимо от того, присутствуют ли status и readyState, он не запускается. Если я полностью удалю onreadystatechange и просто запустил xhr.responseXML, я снова получу нулевую ошибку.
Я все еще получаю правильный XML в качестве ответа в консоли. Это проблема веб-работника, а не проблема httprequest? В отчаянии здесь :)
index.html http://www.axlonline.se/worker/index.html
worker.js http://www.axlonline.se/worker/ рабочий.js