X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Не работает eval в IE
..::Silence::..
..::Silence::..
Topic Starter сообщение 25.3.2009, 10:52; Ответить: ..::Silence::..
Сообщение #1


Здравствуйте!
Не работает функция eval в IE, в Опере работает на ура.
success: function(response){
//var data = eval('(' + response + ')');
eval('var data = ' + response);


Вариант, который закомментирован был первоначально - не работал.
Пробовала
var data = eval('(' + response + ');');
тоже не работает.
После поиска проблемы в гугле, нашла решение
eval('var data = ' + response);
работает, но не в IE.

Код:
{"item":[{"ID":381570,"Code":"082000000001"}],"count":2,"level":2}


Что подскажете?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
..::Silence::..
..::Silence::..
Topic Starter сообщение 26.3.2009, 16:37; Ответить: ..::Silence::..
Сообщение #2


Нарооод!
Неужели никто не может помочь? :xz:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 26.3.2009, 17:00; Ответить: Galen
Сообщение #3


Ну у меня использовался такой код:
eval("var subcat = subcat" + number);

работал везде.

А по вашему коду я что-то не вижу надобности в eval, уверены что оно вам надо?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
..::Silence::..
..::Silence::..
Topic Starter сообщение 26.3.2009, 17:24; Ответить: ..::Silence::..
Сообщение #4


Вполне, так как потом мне необходимо обращаться к item, count и т.д.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
..::Silence::..
..::Silence::..
Topic Starter сообщение 26.3.2009, 18:47; Ответить: ..::Silence::..
Сообщение #5


Вот есть 2 файла, допустим: list.php и index.html
В list.php берутся данные из базы, формируются в массив и выводятся в формате json.
Далее они должны обрабатываться в функции...
Внимание вопрос: должны ли быть оба этих файла в кодировке utf-8?
Или я чушь несу?:rolleyes:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
..::Silence::..
..::Silence::..
Topic Starter сообщение 1.4.2009, 14:52; Ответить: ..::Silence::..
Сообщение #6


Все еще актуально... Помогите, кто-нибудь!!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Webmaster_hb
Webmaster_hb
сообщение 1.4.2009, 15:16; Ответить: Webmaster_hb
Сообщение #7


кодировка файла html может быть любой
а вот данные которые передаются через ajax надо передавать в utf8

вопросы все разные и несколько оторваны от конкретики, а с конкретикой придется копаться

мой вам совет, используйте готовую библиотеку, например jQuery, с ее помощью не только передадите данные, но также и получите доступ к объектной модели своей страницы
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
..::Silence::..
..::Silence::..
Topic Starter сообщение 1.4.2009, 17:33; Ответить: ..::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>&nbsp;</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, то работает. А с переменной не хочет...

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Крауд-маркетинг который работает | Эффективные Ру-ссылки
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


 



RSS Текстовая версия Сейчас: 20.4.2024, 3:17
Дизайн