![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2013
Сообщений: 6
|
Здравствуйте!
Есть некий продукт который должен подгружать данные со стороннего сайта. В строке браузера передается идентификатор, с этим идентификатором идем на сервер и получаем там данные в виде xml. В процессе создаю новый лоадер, вешаю обработчик на событие complete и запускаю URLLoader.load(). Локально все прекрасно, коллбек выполняется. При загрузке на сервер коллбека след простыл. Про кроссдоменные запросы в курсе. На целевом домене разрешил запросы с любых других доменов. В подтверждение в дебаг файл пишет: Цитата:
var loaderXML : URLLoader = new URLLoader(); //create a new URLLoader Object loaderXML.addEventListener( Event.COMPLETE, whenLoadedXML ); //add an event listener to that object try { loaderXML.load( new URLRequest( "http://embed.site.com/data/" + id + "/" + type + "/") ); trace( "XML run load request..."); } catch (error:SecurityError) { trace("A SecurityError has occurred. " + error.message); } loaderXML.addEventListener( Event.COMPLETE, whenLoadedXML ); //add an event listener to that object loaderXML.addEventListener( IOErrorEvent.IO_ERROR, xmlLoaderErrorHandler ); loaderXML.addEventListener( ProgressEvent.PROGRESS, xmlLoaderProgressHandler ); loaderXML.addEventListener( Event.OPEN, xmlLoaderOpenHandler); loaderXML.addEventListener( HTTPStatusEvent.HTTP_STATUS, xmlLoaderHttpStatusHandler ); Подскажите куда можно копнуть, что еще проверить? |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Если я всё правильно понимаю то фраза:
говорит о том что должна быть объявлена функция whenLoadedXML, а её здесь не наблюдается. Добавлено через 8 минут И потом, а какой документ Вы загружаете? loaderXML.load( new URLRequest( "http://embed.site.com/data/" + id + "/" + type + "/") ); //<--- ???? Строка URL у Вас заканчивается заканчивается именем директории type |
|
|||||
|
Регистрация: Feb 2013
Сообщений: 6
|
Цитата:
function whenLoadedXML( e:Event ):void { xml = new XML( e.target.data ); item = xml.item; trace(item[0].name); } Тип документа в ссылке отсутствует, так как документ генерируется динамически и используется ЧПУ. Повторюсь, что локально все нормально отрабатывает (в том числе получение данных с удаленного сервера), проблема при загрузке swf с хостинга. |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Ну тогда так:
а не так: если только имеется ввиду что: |
|
|||||
|
Регистрация: Feb 2013
Сообщений: 6
|
Цитата:
Проблема в том, что метод load() в принципе не отрабатывает и никакие колбеки на ошибку ли (loaderXML.addEventListener( IOErrorEvent.IO_ERROR, xmlLoaderErrorHandler ) , или на завершение (loaderXML.addEventListener( Event.COMPLETE, whenLoadedXML ) не вызываются. |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Вот кусочек официальной документации по AS3:
Класс URLRequest Цитата:
package { import flash.display.Sprite; import flash.events.*; import flash.net.*; public class URLRequestExample extends Sprite { public function URLRequestExample() { var loader:URLLoader = new URLLoader(); configureListeners(loader); var request:URLRequest = new URLRequest("XMLFile.xml"); // <--- ! ! ! ! ! ! try { loader.load(request); } catch (error:Error) { trace("Unable to load requested document."); } } |
|
|||||
|
Регистрация: Feb 2013
Сообщений: 6
|
Документацию читал. Для того, что бы отдать xml файл серверу вовсе не обязательно отзываться по адресу что-то_там.xml.
Ну пусть будет ссылка именно на xml документ: var loader : URLLoader = new URLLoader(); loader.addEventListener( Event.COMPLETE, completeHandler ); loader.addEventListener( IOErrorEvent.IO_ERROR, errorHandler ); loader.load( new URLRequest( "http://somesite.com/data.xml") ); function completeHandler( event : Event ) : void { xml = new XML( event.target.data ); item = xml.item; trace(item[0].name); } function errorHandler( event:IOErrorEvent ):void { trace( "errorHandler: " + event.type + ' ' + event.text); } |
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Не знаю чем помочь ещё, разве что вот код который писал я в своём приложении:
loadXML = new URLLoader(); loadXML.addEventListener(Event.COMPLETE, zagruzXML); /* Загрузка XML-документа --- */ loadXML.load(new URLRequest("../components/com_kartarf/xml/" + par.xmldoc + ".xml?f=" + Math.floor(Math.random()*10000))); } /* Загрузка XML-документа и получение данных --- */ private function zagruzXML(e:Event):void{ var xml:XML = XML(loadXML.data); var xmlList:XMLList = xml.children(); var arrDk1:Array = new Array(); var arrDk2:Array = new Array(); for(var i:uint = 0; i < xmlList.length(); i++){ // Далее код выполнения конкретной задачи. if(i !== 21 && i !== 22 && i !== 55 && i !== 58){ arrDk1.push(xmlList[i].toString()); }else{ if(i == 21) arrDk2[1] = xmlList[21].toString(); if(i == 22) arrDk2[0] = xmlList[22].toString(); if(i == 55) arrDk2[2] = xmlList[55].toString(); if(i == 58) arrDk2[3] = xmlList[58].toString(); } } } Добавлено через 5 минут Попробуйте оттолкнуться от в zagruzXML: var xml:XML = XML(loadXML.data); var xmlList:XMLList = xml.children(); |
|
|||||
|
Регистрация: Feb 2013
Сообщений: 176
|
Может проще все же любым дебагером посмотреть чего сервер отвечает и отправляется ли вообще запрос?
|
|
|||||
|
Регистрация: Feb 2013
Сообщений: 6
|
Цитата:
Что имеется в виду под "любым дебагером"?Добавлено через 3 минуты Накидал быстротест: package { import flash.display.MovieClip; import flash.events.*; import flash.net.*; public class test extends MovieClip { private var loader: URLLoader; private var url: String; private var id: String; private var type: String; public function test() { id = root.loaderInfo.parameters.id; type = root.loaderInfo.parameters.type; if( id === null ) { id = '-6y036c7hz'; type = 'default'; } url = "http://embed.site.com/data/" + id + "/" + type + "/"; loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, completeHandler); try { loader.load( new URLRequest( url ) ); } catch ( error:Error ) { trace("Unable to load requested document."); } } private function completeHandler(event:Event):void { var xml : XML = new XML( event.target.data ); var item = xml.item; trace(item[0].name); } } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|