Вы, конечно, не должны вызывать form.load (). Я обхожу это и просто вызываю свой веб-метод ASMX напрямую, вызывая функцию AJAX, которая ссылается на мой веб-метод, как это предусмотрено ScriptManager. MS AJAX выполняет все JSON-декодирование, выделяет свойство 'd' и т. Д.
Вашему веб-методу даже не нужно возвращать объект с объектами 'success' и 'data', как того требует form.load (), хотя это полезный формат, и я придерживаюсь его.
С помощью объекта «данные», возвращаемого веб-методом (с парами имя / значение, где имя == имя поля), теперь вы можете вызывать форму ExtJs form.setValues (data); записать значения в поля.
Это вполне допустимый случай для обхода кода ExtJS.
-
Как при загрузке, так и при отправке. Чтобы обойти проблему со свойством 'd' в объекте, который должен быть возвращен веб-методом отправки, обработайте событие click кнопки Submit и отправьте данные на сервер, напрямую вызвав ваш веб-метод. Ваш веб-метод может / должен вернуть объект в том же формате, который требуется ExtJs. Но вы возвращаете этот объект, и если не удалось, вызовите form.markInvalid () самостоятельно, передав свойство 'errors'. Peasy легко и хорошо работает.
Опять же, поскольку ExtJs не очень хорошо работают со свойством d, вполне допустимо обойти его и делать что-то самостоятельно.
-
Я склонен использовать функции ScriptManager для все большего и большего вызова моих веб-методов и обходить AJAX-метод ExtJs, вызывающий код. Первые гораздо проще в использовании, они знают о свойстве 'd', а также знают, как десериализовать формат Microsoft JSON для сериализованных объектов DateTime.