Подтвердить что ты не робот

Как JSON декодирует элементы массива в JavaScript?

У меня есть массив JavaScript, который, среди прочего, содержит URL-адрес. Если я попытаюсь просто поместить URL-адрес на страницу (массив находится в проекте с использованием API Yahoo! Maps), он покажет URL-адрес, как и должно быть.

Но если я попытаюсь сделать перенаправление или просто сделаю "предупреждение" в элементе link link, я получаю:

function() {return JSON.encode(this);}

Насколько я вижу, это происходит потому, что браузер выполняет JSON.encode, когда он отображает страницу, поэтому ссылка отображается ОК. Я попробовал несколько методов, чтобы перенаправить (что я хочу делать со ссылкой) правильно (включая использование "eval" ), но не повезло.

После выполнения некоторых рекомендаций я запустил eval('(' + jsonObject + ')'), но все равно возвращает тот же результат.

Итак, как это делается?

4b9b3361

Ответ 1

var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );

См. API jQuery.

Ответ 2

Предположим, что у вас есть массив в PHP как $iniData с 5 полями. Если используется ajax -

echo json_encode($iniData);

В Javascript используйте следующее:

<script type="text/javascript">
    $(document).ready(function(){
        $.ajax({
            type: "GET",
            url: "ajaxCalls.php",
            data: "dataType=ini",
            success: function(msg)
            {
                var x = eval('(' + msg + ')');
                $('#allowed').html(x.allowed);              // these are the fields which you can now easily access..
                $('#completed').html(x.completed);
                $('#running').html(x.running);
                $('#expired').html(x.expired);
                $('#balance').html(x.balance);
            }
        });
    });
</script>

Ответ 3

Если вы получите этот текст в сообщении:

function(){return JSON.encode(this);}

при попытке оповещения (myArray [i]), есть несколько возможностей:

  • myArray [i] - это функция (скорее всего)
  • myArray [i] - это буквальная строка "function() {return JSON.encode(this);}"
  • myArray [i] имеет метод .toString(), который возвращает эту функцию или эту строку. Это наименее вероятно из трех.

Самый простой способ сказать - проверить тип (myArray [i]).

Ответ 4

eval('(' + jsonObject + ')')

Ответ 5

JSON-декодирование в JavaScript - это просто eval(), если вы доверяете строке или более безопасному коду, который вы можете найти на http://json.org если вы этого не сделаете.

После этого у вас будет структура данных JavaScript, которую вы можете выполнить для данных, которые вам нужны.

Ответ 6

Если элемент объекта, который вы получаете, является функцией, вы можете попробовать следующее:

var url = myArray[i]();

Ответ 7

Я декодирую JSON следующим образом:

eval( 'var from_json_object = ' + my_json_str + ';' );