При выполнении фактического RPC с помощью метода "getById ()" возвращается объект dojo.deferred.В этот момент выполняется асинхронный запрос.Используя отложенный объект, вы можете заранее определить обратные вызовы и обработчики ошибок, ожидая ответа, который будет возвращен.
Проверьте, не является ли фактический объект ответа также пустым.Помните, что вы все равно должны использовать ключевое слово return в ваших прикрепленных классах, чтобы возвращать результаты обратно в Zend_Json_Server.Zend_Json_Server затем сериализует и автоматически возвращает возвращаемое значение.Ответ от Zend_Json_Server всегда является сериализованным объектом в JSON, содержащим идентификатор (который увеличивается автоматически при каждом запросе), строку, указывающую, какая версия jsonrpc используется (т. Е. 2.0), и, конечно, результат, содержащий возвращенные данные из присоединенногоclass.
Метод setClass () должен быть не экземпляром объекта, а строкой, содержащей className класса, который вы хотите присоединить.Zend_Json_Server самостоятельно обрабатывает создание экземпляра объекта, а также генерирует SMD (Service Method / Mapper Description).Не забудьте документировать каждый публичный метод с помощью docblocks, так как Zend_Json_Server использует эти docblocks для определения SMD.
Кроме того, гораздо удобнее использовать интерфейс, похожий на свободный, с методом then (), например, так:
var myService = new dojo.rpc.JsonService('/service/json-rpc.php?');
var deferredObj = myService.doThis('myArgument');
deferredObj.then(callback, errorHandler).then(afterCallback).then(cleanUp);
В приведенном выше примере переменные callback, errorHandler, afterCallback и cleanUp фактически являются ссылками на функции.Первый метод then (), который вы вызываете, автоматически передает результат rpc в функцию обратного вызова.Если вы выбросите исключение из подключенного класса rpc, вместо этого будет вызван метод errorHandler (второй необязательный аргумент вызова метода first then ()).
Дополнительная информация: http://www.sitepen.com/blog/2010/05/03/robust-promises-with-dojo-deferred-1-5/