ExtJS: автозагрузка не работает в IE

проще всего назвать метод

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
    if(![txtfld resignFirstResponder])
    {
        [txtfld resignFirstResponder];
    }
    else
    {

    }
    [super touchesBegan:touches withEvent:event];
}
5
задан JulianR 30 June 2009 в 17:52
поделиться

4 ответа

I located the source of the problem and it was indeed not with ExtJS. There was a section in the application that listened to the Ext.Ajax 'requestcomplete' event and tried decoding the response.responseText to json, even if the response was HTML (which it only is in one or two cases). IE was not amused by this.

2
ответ дан 14 December 2019 в 01:14
поделиться

Если вы выполняете автозагрузку в Panel или Element, тогда декодирование JSON даже не должно участвовать в этом процессе. UpdateManager просто подчиняется Ext.Element.update (..), который принимает строку html.

Единственная причина, по которой я могу думать, что ваш ответ будет проанализирован как JSON, - это если вы использовали JSONStore для его запроса - что такое вы используете?

У вас должно получиться сделать что-то простое вроде этого:

var panel = new Ext.Panel({
  autoLoad: 'someurl'  // this is the short form, you can still use the object config
});

ИЛИ

var element = Ext.get('element id').update({
  url: 'someurl'
});

Ответ на обновление:

Это выглядит правильно, если с WMS.Routing.Route не происходит чего-то странного. (...) метод. На самом деле в настоящее время я сам работаю над приложением ExtJS, поэтому я смог быстро протестировать несколько разных ответов сервера и не смог воспроизвести вашу проблему. Я также пересмотрел ExtJS 2.2. 1 и по-прежнему не видит ничего в связанном обновлении элемента и UpdateManager, которое могло бы вызвать Ext.util.JSON.decode (...), который вы видите.

Я полагаю, что это из-за несвязанного запроса AJAX в другой части вашего приложения. Если вы еще этого не сделали, я бы использовал firebug / firebug lite, чтобы помочь отладить это - в частности, попробуйте получить трассировку стека, чтобы убедиться, что источником вашей проблемы действительно является эта автозагрузка.

1
ответ дан 14 December 2019 в 01:14
поделиться

Проверьте свой JSON. FF разрешает конечные запятые в объектах JSON, а IE - нет. например,

{foo:'bar',baz:'boz',}

будет работать в FF, но в IE будет выдавать синтаксическую ошибку. Чтобы не было синтаксической ошибки, JSON должен быть:

{foo:'bar',baz:'boz'}
4
ответ дан 14 December 2019 в 01:14
поделиться

Я не знаю, в чем проблема, но я хотел указать, что ваше «исправление» заставляет его просто возвращать json в виде строки вместо объекта eval'd, поэтому из конечно ошибки больше нет - убрали функционал. Это может быть так же просто:

 this.decode = function(json){   
     return json;
 }

Вообще говоря, случайные ошибки, подобные этой, обычно не указывают на ошибку в Ext, особенно в функциях, используемых так часто, как Ext.decode. Я предполагаю, что либо в JSON есть что-то, что IE не нравится, что другие браузеры игнорируют, либо, что более вероятно, в вашем приложении происходит что-то неожиданное, что не очевидно из вашего описания. Вы пытались проверить журнал запросов в Firebug, чтобы увидеть, как на самом деле выглядит JSON? Вы пробовали сначала передать результат вызова Route в переменную, чтобы проверить ее содержимое перед заполнением панели? Кроме того, попробуйте установить для параметра «прерывание при всех ошибках» в Firebug значение true - часто, когда вы получаете случайную функцию из Ext в верхней части трассировки стека, виновником является код приложения, которым вы не пользовались. ожидая.

1
ответ дан 14 December 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: