Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Применение функции eval. IE выводит системную ошибку. 
V
    Опции темы
kimoog
  Дата 9.8.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.8.2007
Где: Киевская область

Репутация: нет
Всего: нет



Всем привет !
С явой не дружу, поэтому попросил знакомого помочь в написании кода. Тот сделал быстро. Я проверил, скрипт работает, но лишь в Opere и в Firefox. Самое интерестное что в IE выдает системную ошибку. Связи со знакомым пока нет.
Скрипт разработан для поиска по таблице в базе MySQL и вывода моментального результата без перезагрузки вэб странички. Кусок кода прилагаю:
Код

Finder.prototype.SearchByKeyword = function(keyword) {
    if (keyword == '' || keyword == undefined) {
        return;
    }
    keyword = keyword.replace(/\"/g, '\\"');
    this.url = 'finder/bdblog/?category=-1&text='+keyword+'';
    subrequestfunc = function(parent) {
        if (this.typeid == 'metrostat') {
            where = 'metro';
        }
        if (this.typeid == 'roads') {
            where = 'buildings';
        }
        what = this.obj_cod;
        control.Finder.SelectBy(this.id, where, what, parent, this);
    }
    replyfunc = function () {
        var search_objects=[];
        eval(control.Finder.request.responseText);
        if (search_objects && search_objects[0] && search_objects[0].params && search_objects[0].params.error != undefined) {
            keyword = keyword.replace(/\\"/g, '"');
            control.rWindow.Generate('', '<font color="#FF0000" face="Arial"><B>Ничего не найдено по запросу:&nbsp;</font>'+keyword+'</B>');
            control.rWindow.Show(true);
        } else {
            control.SearchResults.ClearSubResults();
            control.SearchResults.Clear(true);
            for(i in search_objects) {
                search_objects[i].params.subrequest = subrequestfunc;
                control.SearchResults.AddObject(search_objects[i].params);
            }
            control.SearchResults.Show(true);
        }
    };
    document.getElementById('searchbutton').src = 'i/progress.gif';
    this.MakeRequest(function () {replyfunc() });

}

Строка ошибки указывает на функцию: eval(control.Finder.request.responseText);
Прошу помощи: SOS   smile  
Буду очень благодарен на любую подсказку.
PM MAIL WWW   Вверх
AKS
Дата 9.8.2007, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



kimoog, попробуйте вместо eval использовать window.execScript (только для IE, есст.) с тем же аргументом...
PM MAIL   Вверх
kimoog
  Дата 9.8.2007, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.8.2007
Где: Киевская область

Репутация: нет
Всего: нет



Цитата(AKS @  9.8.2007,  16:41 Найти цитируемый пост)
kimoog, попробуйте вместо eval использовать window.execScript (только для IE, есст.) с тем же аргументом...

После изменений, в опере и лисе поиск перестал работать, делаю запрос и висит форма.


Это сообщение отредактировал(а) kimoog - 9.8.2007, 18:02
PM MAIL WWW   Вверх
AKS
Дата 9.8.2007, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 20.9.2006

Репутация: 27
Всего: 52



Цитата(kimoog @  9.8.2007,  18:00 Найти цитируемый пост)
После изменений, в опере и лисе поиск перестал работать...

Так ведь изменения только для IE (ведь предупредил!), а для остальных надо оставить так, как было. Типа так:
Код

if (window.execScript) {
    window.execScript(control.Finder.request.responseText, 'jscript');
} else {
    eval(control.Finder.request.responseText);
};

PM MAIL   Вверх
kimoog
  Дата 10.8.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.8.2007
Где: Киевская область

Репутация: нет
Всего: нет



Цитата(AKS @ 9.8.2007,  18:22)
Код

if (window.execScript) {
    window.execScript(control.Finder.request.responseText, 'jscript');
} else {
    eval(control.Finder.request.responseText);
};

т.е. этот код вставить под 
Код

...
replyfunc = function () {
        var search_objects=[];

правильно я понял ?
PM MAIL WWW   Вверх
Exception
Дата 10.8.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 1
Всего: 186



Да. А вообще, неплохо бы нам показать текст ошибки и этот самый responseText, который у него не получается выполнить.
P.S. Использовать тег font это дурной тон по отношению к пользователю и его браузеру.
PM   Вверх
kimoog
  Дата 10.8.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.8.2007
Где: Киевская область

Репутация: нет
Всего: нет



Менял строку, в IE все равно неработает. Подозреваю уже что тут дело не в eval.
А текст ошибки такой: 
Цитата

Ошибка сценария IE,строка 1996,символ 3,Системная ошибка:-1072896658,Код:0,Url: ссылка на форму.

В строке 1996 находится: 
Код

eval(control.Finder.request.responseText);

Ошибка выводится только в IE. В лисе и опере скрипт работает на ура.

Вот что понимает js-код и прекрасно выводит Opera и Firefox.

Код

search_objects.push(new SimpleObject({
id: '11', 
typeid: 'busines', 
typename: 'Каталог'
}));

PM MAIL WWW   Вверх
Exception
Дата 10.8.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 1
Всего: 186



Аналогичная проблема. Выяснилось, что по ошибке разработчики серверной части указали кодировку не "utf-8", а "UTF8" (кстати, я помню, однажды я допустил такую же ошибку). Все браузеры это "проглатывали", но в библиотеке MSXML это вызывает критическую ошибку при попытке доступа к responseText.
Проверь, какую кодировку возвращает твой скрипт.
PM   Вверх
kimoog
  Дата 15.8.2007, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 3.8.2007
Где: Киевская область

Репутация: нет
Всего: нет



Цитата(Exception @ 10.8.2007,  22:46)
Проверь, какую кодировку возвращает твой скрипт.

Ох шайтан, шайтан. Действительно на сервере лежал файлик .htaccess  с 
Код
 AddDefaultCharset cp1251 
.
Теперь ясно в чем проблема, которая совсем не относится к eval. Ну да ладно. Впредь буду сначала изучать кода ошибок, а потом уж беспокоить.
Твой +
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.