Условный вызов на основе данных JSON - PullRequest
0 голосов
/ 12 октября 2010

Я пытаюсь изменить свою страницу Javascript, которая использует библиотеку Ext Js (я понятия не имею о ext js, тоже не работал над ней)

Что я хочу сделать, так этона основе данных JSON, в частности, поля «successProperty», я хочу решить, загружать ли сетку или выдавать предупреждение.

Что я могу сделать, это добавить событие в класс.но я не знаю, как это сделать.

Может кто-нибудь дать мне хороший пример, который поможет мне в достижении того, что мне нужно.

Спасибо.

пожалуйстадайте мне знать, если мне нужно дать больше подробностей

еще раз спасибо ..

1 Ответ

0 голосов
/ 12 октября 2010

« successProperty » - это не то, что вы думаете. Это свойство используется ExtJS для внутренних целей, чтобы узнать, есть ли в методе ошибка. Это строка, содержащая « name » свойства внутри возвращаемого JSON, который сообщит платформе ExtJS, что что-то пошло не так, а не сам статус ошибки . Вот почему ExtJS позволяет вам «определять» это свойство. И так как ваша сторона сервера будет определяться вами, вы можете выбрать любое имя, которое вам нравится, для вашего статуса успеха , и если вы выберете что-то отличное от success (по умолчанию successProperty) затем вы определяете его в successProperty свойстве конфигурации JsonReader.

И простой способ определить, произошла ли ошибка при загрузке сетки, - проверить 3-й параметр (называемый success) callback в методе load:

store.load({
    params:{start:0, limit:15},
    callback: function(result, options, success) {
        if (!success) {
            alert('error!!');
        }
    }
});

Существуют более общие способы обработки ошибок на стороне сервера, вместо определения обратного вызова для каждого store.load, который вы можете использовать:

// Listen to "exception" event fired by all proxies
Ext.data.DataProxy.on('exception', function(proxy, type, action, ex) {
    alert('Error through DataProxy.exception at ' + type + '.'+ action);
});

Или, если вы уже используете Ext.Direct , вы можете использовать его exception событие (возможно, вы не используете Ext.Direct, поэтому не ожидайте, что оно будет работать само по себе):

Ext.Direct.on('exception', function(ex) { alert(ex.message); });

Я собрал полный пример с первыми 2 способами отлова ошибок: http://jsfiddle.net/vZGvM/. В примере нет ошибок, но вы можете смоделировать ошибку, указав URL-адрес ScriptTagProxy на любой недействительный URL-адрес (если вы сделаете это, потребуется время, но вы увидите оба предупреждения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...