Помощник
|
Не работает eval в IE |
..::Silence::..
|
Сообщение
#1
|
||
|
|
||
|
|||
..::Silence::..
|
Сообщение
#2
|
|
Нарооод!
Неужели никто не может помочь? :xz: |
|
|
Galen |
26.3.2009, 17:00;
Ответить: Galen
Сообщение
#3
|
|
Ну у меня использовался такой код:
eval("var subcat = subcat" + number); работал везде. А по вашему коду я что-то не вижу надобности в eval, уверены что оно вам надо? |
|
|
..::Silence::..
|
Сообщение
#4
|
|
Вполне, так как потом мне необходимо обращаться к item, count и т.д.
|
|
|
..::Silence::..
|
Сообщение
#5
|
|
Вот есть 2 файла, допустим: list.php и index.html
В list.php берутся данные из базы, формируются в массив и выводятся в формате json. Далее они должны обрабатываться в функции... Внимание вопрос: должны ли быть оба этих файла в кодировке utf-8? Или я чушь несу?:rolleyes: |
|
|
..::Silence::..
|
Сообщение
#6
|
|
Все еще актуально... Помогите, кто-нибудь!!
|
|
|
Webmaster_hb |
1.4.2009, 15:16;
Ответить: Webmaster_hb
Сообщение
#7
|
|
кодировка файла html может быть любой
а вот данные которые передаются через ajax надо передавать в utf8 вопросы все разные и несколько оторваны от конкретики, а с конкретикой придется копаться мой вам совет, используйте готовую библиотеку, например jQuery, с ее помощью не только передадите данные, но также и получите доступ к объектной модели своей страницы |
|
|
..::Silence::..
|
Сообщение
#8
|
|
|
Вот код, может так будет нагляднее:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <!-- <link href="style/search.css" rel="stylesheet" type="text/css" /> --> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/createselect.js"></script> <title>создание каскада динамических списков</title> <script type="text/javascript"> $(document).ready(function(){ /* Получаем список категорий */ var root = document.getElementById("curval").value; getCategory(root); }); </script> </head> <body> <div id="searchQuery"> <form name="search" action="" method="post"> <div align="left">Категория:</div><br /> <table width="973" bgcolor="#f2f2f2" border="0" cellpadding="5" cellspacing="5"> <tbody> <tr> <td id="categories"> <input type="hidden" value="316137" id="curval"></input> <select name="category_1"> </select> <br /> </td> </tr> </tbody> </table> </form> <p> </p> </div> <div id="msg"> <h1>Сообщения о возможных ошибках: </h1> </div> </body> <html> Код файла createselect.js: (function($){ /* Очищаем select */ $.fn.clearSelect = function() { return this.each(function(){ /* Проверяем является ли элемент select`ом */ if(this.tagName=='SELECT') { this.options.length = 0; /* Блокируем на время заполнения */ $(this).attr('disabled','disabled'); } }); } /* Удаляем старшие элементы */ $.fn.clearField = function(selector) { /** * Ищем все элементы следующие за вызывавшим * и удовлеторяющие переданному селектору */ this.nextAll(selector).remove(); return this; } /* Заполняем select переданными данными */ $.fn.fillSelect = function(dataArray) { return this.clearSelect().each(function(){ /* Проверяем является ли элемент select`ом */ if(this.tagName=='SELECT') { var currentSelect = this; /* Добавляем пунтк меню "Выбрать..." */ var start = new Option('Выбрать...', '-1'); /* Устанавливаем этот option первым в списке */ if($.support.cssFloat) { currentSelect.add(start,null); } else { currentSelect.add(start); } $.each(dataArray,function(index,data){ /* Если определено 'name' */ if(data.Name) { /* Создаем новый option */ var option = new Option(data.Name,data.ID); /* Добавляем новый option к select`у */ if($.support.cssFloat) { currentSelect.add(option,null); } else { currentSelect.add(option); } } }); /* Выделяем первый элемент списка */ $(this).removeAttr('disabled').find('option:first').attr('selected', 'selected'); } }); } })(jQuery); /* Добавляем обработчик событий при изменении пункта списка */ function clickEvent(select) { var id = select.find('option:selected').attr('value'); /** * Если id=-1, значит выбран пункт "Выбор.." * значит мы должны просто очистить старшие списки */ if (id == '-1') { select.clearField('select[name^=category]').clearField('span'); return false; } // var level = parseInt(select.attr('name').replace('category_', '')) + 1; return getCategory(id); } /* Функция отсылает ajax-запрос */ function getCategory(root) { $.ajax({ url: 'http://1-151/cn/index.php', type: 'POST', data: 'task=node&no_html=1&action=makelist&root=' + root, dataType: 'JSON', timeout: 50000, beforeSend: function(){ // Блокируем все необходимы select`ы $('select[name^=category_]').attr('disabled', 'disabled'); }, complete: function(){ // Снимаем блокировку $('select[name^=category_]').removeAttr('disabled'); }, success: function(response){ //var data = eval('(' + response + ')'); eval('var data = ' + response); // Если количество категорий в ответе 0 либо не определено if(data.count === 'undefined' || data.count == 0) { // просто удаляет старшие уровни каскада $('select[name=category_'+ (data.level - 1) +']') .clearField('select[name^=category]') .clearField('span'); return false; } if( $('select[name=category_'+ data.level +']').length ) { // Если select этого уровня уже существует // мы должны удалить все старшие select`ы, // очистить старые данные и заполнить новым контентом $('select[name=category_'+ data.level +']') .clearField('select[name^=category]') .clearField('span') .fillSelect(data.item); } else { // Если select этого уровня не существует, // мы должны его создать и заполнить данными $('#categories select:last').after('<br/> <select name="category_'+ data.level +'"></select>'); $('select[name=category_'+ data.level +']').fillSelect(data.item); } /* Сбрасываем старый обработчик */ $('select[name=category_'+ data.level +']').unbind('change'); /* Вешаем новый */ $('select[name=category_'+ data.level +']').change(function(){ return clickEvent($(this)); }); return false; }, error: function(){ $('#msg').append('error!');} }); } Ошибку пишет здесь: eval('var data = ' + response); Причем просто "синтаксическая ошибка" и указывает на эту строку. Но данные, которые находятся в response, если тупо подставить в строке с eval вместо response, то работает. А с переменной не хочет...
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Крауд-маркетинг который работает | Эффективные Ру-ссылки | 1 | Azyuka | 1053 | 13.2.2024, 19:36 автор: tascha56 |
|
Кто работает с партнерской программой eBay? | 0 | Stalser | 1175 | 14.12.2021, 12:26 автор: Stalser |
|
Кто работает с партнеркой Кликбанк? | 4 | metvekot | 1722 | 5.12.2021, 22:32 автор: adamsadriane |
|
Бесплатный аудит рекламы от специалиста с 20 летним стажем. Реклама не всегда работает. Ваша реклама может быть больше! |
0 | AndyGray | 6802 | 1.4.2021, 12:31 автор: AndyGray |
|
Продам мануал "Как работает Google Discover" | 8 | vvovvo | 3118 | 28.5.2020, 19:50 автор: vvovvo |
Текстовая версия | Сейчас: 20.4.2024, 3:17 |