Ответ 1
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );
У меня есть массив JavaScript, который, среди прочего, содержит URL-адрес. Если я попытаюсь просто поместить URL-адрес на страницу (массив находится в проекте с использованием API Yahoo! Maps), он покажет URL-адрес, как и должно быть.
Но если я попытаюсь сделать перенаправление или просто сделаю "предупреждение" в элементе link link, я получаю:
function() {return JSON.encode(this);}
Насколько я вижу, это происходит потому, что браузер выполняет JSON.encode, когда он отображает страницу, поэтому ссылка отображается ОК. Я попробовал несколько методов, чтобы перенаправить (что я хочу делать со ссылкой) правильно (включая использование "eval" ), но не повезло.
После выполнения некоторых рекомендаций я запустил eval('(' + jsonObject + ')')
, но все равно возвращает тот же результат.
Итак, как это делается?
var obj = jQuery.parseJSON('{"name":"John"}');
alert( obj.name === "John" );
Предположим, что у вас есть массив в 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>
Если вы получите этот текст в сообщении:
function(){return JSON.encode(this);}
при попытке оповещения (myArray [i]), есть несколько возможностей:
Самый простой способ сказать - проверить тип (myArray [i]).
eval('(' + jsonObject + ')')
JSON-декодирование в JavaScript - это просто eval(), если вы доверяете строке или более безопасному коду, который вы можете найти на http://json.org если вы этого не сделаете.
После этого у вас будет структура данных JavaScript, которую вы можете выполнить для данных, которые вам нужны.
Если элемент объекта, который вы получаете, является функцией, вы можете попробовать следующее:
var url = myArray[i]();
Я декодирую JSON следующим образом:
eval( 'var from_json_object = ' + my_json_str + ';' );