Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№105-02-2010 03:16:22

zencd
Участник
 
Группа: Members
Зарегистрирован: 09-07-2008
Сообщений: 60
UA: Firefox 3.6

Потеря контекста исполнения в связке AJAX + input stream

В расширении делаю асинхронный POST, но в send() передаю не многомегабайтную строку, а input stream. В результате в лисенере я не могу вызвать ни alert(), ни свои функции - они недоступны:

Error: Component returned failure code: 0x80004005 (NS_ERROR_FAILURE [nsIDOMWindowInternal.alert]

Есть возможность всё-таки использовать инпут стрим?

Выделить код

Код:

function get_file_input_stream(file_url) {
   var ios = Components.classes["@mozilla.org/network/io-service;1"]
                  .getService(Components.interfaces.nsIIOService)
   var url = ios.newURI(file_url, null, null)
   if (!url || !url.schemeIs("file")) throw "Expected a file URL"
   var hFile = url.QueryInterface(Components.interfaces.nsIFileURL).file
   var istream = Components.classes["@mozilla.org/network/file-input-stream;1"]
                            .createInstance(Components.interfaces.nsIFileInputStream)
   istream.init(hFile, -1, -1, false)
   return istream
}

var req = new XMLHttpRequest()
req.open('POST', 'http://server/ajax.php', true)
req.setRequestHeader('Content-Type', 'image/jpeg')
req.onreadystatechange = function(event) {
   if(req.readyState == 4)
      alert('does alert works?')
}
var is = get_file_input_stream('file:///................')
req.send(is)
is.close()

Отредактировано zencd (05-02-2010 03:21:20)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]