05.05.2011, 15:08
|
Интересующийся
|
|
Регистрация: 01.05.2011
Сообщений: 10
|
|
Как загрузить xml из вышележащей директории без обращения к серверу?
Нужно загрузить данные из внешнего xml, расположенного в той же папке (или выше), откуда запущено JS приложение. Насколько я понял, XMLHttpRequest позволяет загружать файлы только через обращение к серверу. Можно ли как-нибудь загрузить данные из файла без помощи сервера?
|
|
05.05.2011, 17:36
|
Интересующийся
|
|
Регистрация: 29.04.2011
Сообщений: 13
|
|
Немного непонятно... xml находится на клиентской машине или на web-сервере?
|
|
05.05.2011, 17:43
|
|
Профессор
|
|
Регистрация: 09.11.2009
Сообщений: 1,101
|
|
Вроде на клиентской машин. По моему никак нельзя.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
|
|
05.05.2011, 18:24
|
|
Люмус, Емаксос Developer!
|
|
Регистрация: 06.05.2010
Сообщений: 677
|
|
Можно.
В случае если это обычная страница. Файл нужно открыть во фрейме и после получить необходимые данные с этого фрейма.
Но если это именно приложение, виджет, гаджет или hta-апликация, то там есть встроенные методы для работы с локальными файлами.
|
|
05.05.2011, 18:36
|
|
Профессор
|
|
Регистрация: 09.11.2009
Сообщений: 1,101
|
|
Сообщение от Magneto
|
Файл нужно открыть во фрейме и после получить необходимые данные с этого фрейма
|
Я как то пробовал так сделать. Он выдал ту же ошибку что и получается когда получаешь данные с фрейма чужой страницы. Он тоже думает что будто разные домены.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
|
|
05.05.2011, 19:20
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от Parez
|
Нужно загрузить данные из внешнего xml
|
примерно (еще есть нюансы с оперой) так:
function loadXML(import_file) {
if(typeof ActiveXObject != 'undefined') {
var version = ['Microsoft.XML',
'MSXML2.DOMDocument',
'MSXML2.DOMDocument.3.0',
'MSXML2.DOMDocument.4.0',
'MSXML2.DOMDocument.5.0',
'MSXML2.DOMDocument.6.0'
],
i = version.length, XMLObject;
while(i--) {
XMLObject = new ActiveXObject(version[i]);
}
XMLObject.onreadystatechange = function () {
if(XMLObject.readyState == 4) {
/* ... */
}
XMLObject.load(import_file);
}
}
else if(document.implementation && document.implementation.createDocument) {
var XMLObject = document.implementation.createDocument('','',null);
XMLObject.load(import_file);
XMLObject.onload = function() {
/* ... */
};
}
else {
alert('Your browser doesn\'t support this object');
return false;
}
}
Последний раз редактировалось monolithed, 05.05.2011 в 22:04.
|
|
05.05.2011, 21:06
|
Интересующийся
|
|
Регистрация: 01.05.2011
Сообщений: 10
|
|
monolithed, то, что вы написали не требует обращения к серверу?
И потом я слышал, что ActiveXObject работает только в IE. А для остальных используется XMLHttpRequest.
Последний раз редактировалось Parez, 05.05.2011 в 21:18.
|
|
05.05.2011, 21:35
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от Parez
|
то, что вы написали не требует обращения к серверу?
|
я не понимаю сути вопроса, по вашему подгружаемый файл должен материализоваться из воздуха?
в вашем случае, нужно заместо import_file указать путь к файлу и вызвать функцию (ну и допилить код в плане реализации и парсинга документа)
Сообщение от Parez
|
И потом я слышал, что ActiveXObject работает только в IE. А для остальных используется XMLHttpRequest.
|
прочтите внимательно код, а лучше документацию по работе с этими объектами и примеры использования
Последний раз редактировалось monolithed, 05.05.2011 в 22:08.
|
|
06.05.2011, 11:15
|
Интересующийся
|
|
Регистрация: 01.05.2011
Сообщений: 10
|
|
Сообщение от monolithed
|
я не понимаю сути вопроса, по вашему подгружаемый файл должен материализоваться из воздуха?
|
Я, если честно, не совсем понимаю устройства JS. 2 года программировал на AS3 и таких проблем не возникало. Flash'у наплевать как ты его запускаешь: со своего же компьютера или с сервера - он всегда может загружать в себя данные, находящиеся в той же директории или выше. JS тоже клиентский язык, так в чём же проблема?
Последний раз редактировалось Parez, 06.05.2011 в 11:31.
|
|
06.05.2011, 13:26
|
Особый гость
|
|
Регистрация: 02.04.2010
Сообщений: 4,260
|
|
Сообщение от Parez
|
JS тоже клиентский язык, так в чём же проблема?
|
нет никаких проблем, JS тоже:
Сообщение от Parez
|
всегда может загружать в себя данные, находящиеся в той же директории или выше.
|
точнее работать с данными.
Что вы делаете может расскажите?
|
|
|
|