![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2012
Сообщений: 40
|
Здравствуйте!
БД (база даных) <----> CF(ColdFusion 9) <-----> Приложение (main.swf) Флешка (main.swf) лежит на сервере. Запускаю ее удаленно http://192.168.111.1/dev/main.swf с локальной машины. 1) Флешка открывается, в ней есть форма. Данные формы сохраняются и записываются в БД. Закрыли форму. 2) Открыли ее вновь и данные (которые сейчас заполняли) должны были загрузиться и отобразиться в форме. Но этого не случилось. Тест показал, что после запроса(на получение данных для формы из БД) данные получены CF и отправлены во флешку, но во флешку уже приходит пустой запрос, т.е. данные потерялись на этапе CF(ColdFusion 9) -----> Приложение (main.swf) есть данные нет данных Локально все хорошо. Видимо проблема с серваком, но если напрямую указать путь, например к фото на серваке (которое было загружено ранее), то она отобразится в форме, т.е. не приходят именно данные почему-то... Из-за чего они могут не доходить до адресата? на серваке: IIS 6.0, Windows 2003 C:\Inetpub\wwwroot\dev\main.swf Причем ответ приходит в виде ac:ArrayCollection. ac[0] - Object с кучей подданных, если можно так выразиться. Так вот, когда все хорошо, то данные в Object есть. А когда все плохо, то именно ДАННЫХ в Object нет. А ас[0] приходит, но без данных. Грешил, что сервак данные /"не отдает/", но ведь пользователь проверку (логин/пароль) проходит. А уже потом заполняет форму. Последний раз редактировалось Чеширский Кот; 09.04.2012 в 15:33. |
|
|||||
|
Регистрация: Mar 2012
Сообщений: 40
|
Тут сало веселее...
Добавил в форму, для теста, DataGrid и привязал к нему напрямую вызов этого метода, который с пустыми данными приходит. И что вы думаете? В таблице они отображаются! relative.cfc (здесь хранятся методы для работы с БД). public var relatives:Relatives = new Relatives(); protected function init():void { relatives.addEventListener(ResultEvent.RESULT, onResult_relatives); relatives.addEventListener(FaultEvent.FAULT, onFault_relatives); } protected function getRelativeById(IdRelative:Number):void { relatives.getRelativeById(IdRelative); } private function onResult_relatives(event:ResultEvent):void { // здесь ловлю данные var ac:ArrayCollection = new ArrayCollection(); ac = event.currentTarget.operations.getRelativeById.lastResult; var obj:Object = ac.getItemAt(0); // и уже из obj получаю локально данные, а на серваке приходят "undefined" // локально: obj.name = "Иван"; на серваке obj.name = "undefined" } К тому же так же решил прослушать и DataGrid... результат тоже "undefined", но данные в таблице! Что за "мистика"!? Добавлено через 19 часов 9 минут У меня ощущение, что проблема с типами данных... Добавлено через 22 часа 42 минуты Может беда взаимосвязи между сервером и флешкой? Коммуникация между сервером и флешем происходит благодаря ColdFusion. В частности к файлу relative.cfc, который привязан к приложению. Как сделано здесь: пример Вот через это (Данные/службы в Flash Builder 4) [IMG]http://s2.************/uploads/20120412/QGo36xr9.png[/IMG] А отсюда сделал у себя DataGrid для теста в форме пример2 Кстати, сделал тип данных : RelativeDataType (как видно из картинки) И после этого данные в DataGrid перестали правильно отображаться (приходят только нули в столбцы (idrelative:int и iduser:int), т.е. там где тип данных int - приходит ноль. А в остальные пусто(null) ). Здесь возвращаемый тип данных RelativeDataType у метода (relatives.getRelativeById(IdRelative)) Стало так: [IMG]http://s1.************/uploads/20120412/zT1BUUZ0.png[/IMG] Здесь возвращаемый тип данных Object у метода (relatives.getRelativeById(IdRelative)) А было так: [IMG]http://s2.************/uploads/20120412/ZoWLf54m.png[/IMG] Вот поэтому и грешу на типы данных. Вот в чем может быть беда? По ощущением какая-то фигня, может разрешение где приписать надо, видимо на серверной стороне не знают, что такое за тип данных RelativeDataType. Как серверу об этом узнать? Или может в чем-то другом беда... Добавлено через 25 часов 48 минут <cffunction name="getRelativeByIdFirstname" output="false" access="remote" returntype="any" > <cfargument name="IdRelative" required="yes" type="numeric"/> <cfset var qGetRelativeByIdFirstname=""> <cfquery name="qGetRelativeByIdFirstname" datasource="familytreeSource"> SELECT IdRelative,FirstName,IdUser FROM relatives WHERE IdRelative = <cfqueryparam cfsqltype="CF_SQL_INTEGER" value="#IdRelative#"> </cfquery> <cfreturn qGetRelativeByIdFirstname.FirstName> </cffunction> А когда я пытаюсь передать свой тип данных - пользовательский (RelativeDataType) , то беда. Надо разобраться, каким образом сервер должен узнавать о пользовательских типах данных. Добавлено через 42 часа 42 минуты Проблема решилась профилированием кода с 1 ночи и до 8 утра. В результате метод, который работал, дома после правки кода, стал неадекватно работать - перестал доходить до места, где заполнял таблицу данными. Это первое. А второе, что могло быть... на локалке сервер C:\ColdFusion9\wwwroot и cfc файлы там же, а на серваке это C:\Inetpub\wwwroot может и из-за этого что пути разные были, но вряд ли. А третье, это Данные/службы в Flash Builder : сначала тестовый пример, который билдер предлагает сделать, через RDS. А уже потом в получившейся cfc файл добавил свои методы. И скорее всего из-за этого была проблема. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:32. |
|
|
« Предыдущая тема | Следующая тема » |
|
|