![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2010
Сообщений: 5
|
Столкнулся с такой вот проблемой:
Есть Flex4, он соединяется посредством php (и Zend) с MySQL. Чтение базы происходит корректно, а вот операции с изменением данных нет, т.е. попытка удалить запись выполняется без ошибок (правда мы не получаем событие ответа от респондера), но данные не изменяются. Самое интересное, что в режиме "Тестовая операция" данные в MySQL изменяются! В режиме же запуска из AS3 - нет. Вот пример AS3 обработчика отправки данных по нажатию кнопки: var vehicles:Vehicles = new Vehicles(); vehicles.id_userowner = parseInt(id_userownerTextInput.text); vehicles.name = nameTextInput.text; vehicles.registration_number= registrationNumber.text; createVehiclesResult.token = vehiclesService.createVehicles(vehicles); Есть так же теги: <valueObjects:Vehicles id="vehicles"/> <s:CallResponder id="createVehiclesResult" result="createVehiclesResult_resultHandler(event)"/> но функция "createVehiclesResult_resultHandler" так и не вызывается. Особая засада с тем, что тестовая операция создания записи с подключенным сервисом и следующими входными данными { name:Mersedes, id_userowner:5, registration_number:x545x96 } срабатывает перкрасно и запись в MySQL базе данных появляется, а вот из AS3 - нет. ---- Буду рад за любые идеи и советы. Спасибо. -------------------------------------------------------------------------------------------------- UDP: решение найдено Похоже это внутренний глюк Flash Builder 4. Решается изменением типов функции и переменных: Было public function createUsers(item:valueObjects.Users) : mx.data.ItemReference { var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("createUsers"); var _internal_token:mx.data.ItemReference = _internal_operation.send(item) as mx.data.ItemReference; return _internal_token; } Стало public function createUsers(item:valueObjects.Users) : mx.rpc.AsyncToken { var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("createUsers"); var _internal_token:mx.rpc.AsyncToken = _internal_operation.send(item) as mx.rpc.AsyncToken; return _internal_token; } Кроме того выявлен еще один баг, функция удаления записей то же не работала. Решается так: ищем файл php с описанием сервиса, в нем в изменяем наименование функции вида public function delete<table> (например deleteUsers) на public function delete<table>_test (например deleteUsers_test) после этого меняем название в AS-файле вида _Super_<table>Service (например _Super_UsersSerivice) в строке var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("deleteUsers"); на var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("deleteUsers_test"); функции public function delete<table>(itemID:Object) : mx.rpc.AsyncToken после этого всё начинает работать как надо, потом можно поменять названия функций на исходные, но все продолжит работать корректно. -------------------------------------------------------------------------------------------------- Последний раз редактировалось GregoryR; 20.08.2010 в 16:29. Причина: Решение найдено |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|