Я использую JSON в PHP, и теперь мне нужно получить к нему доступ из JavaScript. Как передать объект JSON в JavaScript?
<?php
$array = array("a"=>"Caucho", "b"=>"Resin", "c"=>"Quercus");
$json = json_encode($array);
>
где My.js имеет:
showAll(){
alert("Show All Json Objects");
// How do I get the JSON value here?
}
Как мне это сделать?
Вы можете запросить данные JSON с помощью AJAX или передать данные из PHP в JavaScript как переменную JavaScript:
$array = array("a"=>"Caucho", "b"=>"Resin", "c"=>"Quercus");
$json = json_encode($array);
echo '<script type = "text/javascript">';
echo 'var myJson = "' . $json . '";';
echo '</script>';
edit: вам нужно оценить строку json, иначе у вас будет просто строка, а не объект ...
Конечно, имея в виду все рекомендации по смешиванию PHP / HTML / JavaScript ...
Предполагая, что вы используете Ajax в качестве метода загрузки JSON, вы должны повторить результат json_encode:
<?php
$array = array("a"=>"Caucho", "b"=>"Resin", "c"=>"Quercus");
echo json_encode($array);
?>
А затем в событии обратного вызова вы оцените ответ:
var obj = eval('(' + req.ResponseText + ')');
for(var i in obj) {
alert(i + ': ' + obj[i]);
}
Предполагая, что у вас есть объект XMLHttpRequest с именем req
.
<?php
$array = array("a"=>"Caucho", "b"=>"Resin", "c"=>"Quercus");
$json = json_encode($array);
?>
<script type = "text/javascript">
var myjson = <?php echo $json; ?>;
</script>
На самом деле это лучший ответ, вы можете поместить данные JSON прямо в javascript, как в ответе, он задокументирован на официальная страница json. Спасибо.
Вместо этого я бы отправил +1 за то, что сделал это через ajax, поскольку тогда вы можете просто оценить возвращенный фрагмент json, и вам не нужно беспокоиться о смешивании php / javascript / html.