Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.04.2010, 10:34
Аспирант
Отправить личное сообщение для WalterScott Посмотреть профиль Найти все сообщения от WalterScott
 
Регистрация: 10.05.2009
Сообщений: 57

Обновление грида
Что-то не соображу, как мне перерисовать грид при добавлении или удалении строки.
Ну, у хендлера кнопки, которая выполняет действие есть функция success, в которой по значению флага success в ответе сервера я могу определить, что запрос действительно успешный. А как сам грид перерисовать?
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2010, 10:55
Аспирант
Отправить личное сообщение для WalterScott Посмотреть профиль Найти все сообщения от WalterScott
 
Регистрация: 10.05.2009
Сообщений: 57

В Firefox работает store.reload(), где store хранилище.
Не работает в IE8 и Опере9. По-моему, впервые в ExtJS столкнулся с чем-то, работающим не кроссбраузерно.
Ответить с цитированием
  #3 (permalink)  
Старый 13.04.2010, 11:45
Аспирант
Отправить личное сообщение для WalterScott Посмотреть профиль Найти все сообщения от WalterScott
 
Регистрация: 10.05.2009
Сообщений: 57

Оказывается ошибку вызывает не reload().
Заменил store.reload() на location.href, чтобы просто перезагрузить страницу вместо обновления грида и оказалось, что ошибка происходит раньше. Но после отправки данных серверу, запрос к базе нормально отрабатывает.
Консоль ошибок в Опере вот что выдаёт:
Цитата:
Error:
name: SyntaxError
message: Statement on line 12242: Syntax error
Backtrace:
Line 12242 of linked script http://localhost/ext/scripts/ext/ext-all-debug.js
return eval("(" + json + ')');
Line 12380 of linked script http://localhost/ext/scripts/ext/ext-all-debug.js
return dc(json);
Line 63316 of linked script http://localhost/ext/scripts/ext/ext-all-debug.js
return Ext.decode(response.responseText);
Line 63137 of linked script http://localhost/ext/scripts/ext/ext-all-debug.js
this.result = this.handleResponse(response);
Line 63285 of linked script http://localhost/ext/scripts/ext/ext-all-debug.js
var result = this.processResponse(response);
... Line 9519 of linked script http://localhost/ext/scripts/ext/ext-all-debug.js
options.success.call(options.scope, response, options);
... Line 7 of linked script http://localhost/ext/scripts/ext/ada...t/ext-base.js: In function f
function f(v,w,r,q){if(!w){n(v);return}var t,s;try{if(v.conn.status!==undefined&&v.conn.statu s!=0){t=v.conn.status}else{t=13030}}catch(u){t=130 30}if((t>=200&&t<300)||(Ext.isIE&&t==1223)){s=o(v, w.argument);if(w.success){if(!w.scope){w.success(s )}else{w.success.apply(w.scope,[s])}}}else{switch(t){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:s=e(v.tId,w.argument,(r?r:false),q);if(w.fai lure){if(!w.scope){w.failure(s)}else{w.failure.app ly(w.scope,[s])}}break;default:s=o(v,w.argument);if(w.failure){i f(!w.scope){w.failure(s)}else{w.failure.apply(w.sc ope,[s])}}}}n(v);s=null}
Line 7 of linked script http://localhost/ext/scripts/ext/ada...xt/ext-base.js
function(){if(q&&q.readyState==4){clearInterval(r[u]);r[u]=null;if(t){clearTimeout(k.timeout[u]);k.timeout[u]=null}f(s,v)}}
...
Ошибка происходит в ext-all-debug.js вот в этой функции:
doDecode = function(json){
            return eval("(" + json + ')');    
        }

Похоже на то, что JSON в ответе сервера приходит неправильный.
Может это из-за того что я в php-скрипте не добавляю в возвращаемый
JSON свойство success?
Скрипт добавления в базу у меня просто выполняет insert, о формировании ответного json-а он не заботится.
Ответить с цитированием
  #4 (permalink)  
Старый 13.04.2010, 15:25
Аспирант
Отправить личное сообщение для WalterScott Посмотреть профиль Найти все сообщения от WalterScott
 
Регистрация: 10.05.2009
Сообщений: 57

Сообщение от WalterScott Посмотреть сообщение
Может это из-за того что я в php-скрипте не добавляю в возвращаемый
JSON свойство success?
А, ну да, из-за этого.
Когда добавляю в JSON св-во success всё работает.


Дело даже не в отсутствии св-ва success, а в том, что JSON надо отправлять в явном виде. Я думал, что фреймворк сам это сделает в данном случае.

Но короче, я думал, что если действие не предполагает получение чего-то с сервера, то я ничего возвращать и не должен.

Последний раз редактировалось WalterScott, 13.04.2010 в 17:03. Причина: Объясняю, в чем проблема была.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление страницы после получения ответа от сервера potrashitel AJAX и COMET 9 24.02.2015 10:04
Обновление поля вместе с кнопкой,при нажатию на которую происходит обновление тома AJAX и COMET 8 26.11.2009 10:47
Как в ячейку грида всунуть combobox? kostiaGt ExtJS 1 29.10.2009 17:46
Время и дата, обновление в онлайне Jex Элементы интерфейса 6 20.11.2008 12:09
Цикличное обновление страницы Roman_kstu Общие вопросы Javascript 7 29.05.2008 05:55