2015-09-21 2 views
0

Я пытаюсь получить значение массива из строки JSON, и я делаю работу с json_decode PHP.Как передать многомерный массив с PHP на Javascript?

<?php 
$jsonContent=file_get_contents('http://megarkarsa.com/gpsjson.php'); 
$jsonDecoded=json_decode($jsonContent,true); 
foreach($jsonEncoded['BMS'] as $p){ 
echo ' 
ID: '.$p['id'].' 
Tipe: '.$p['type'].' 
'; 
echo "<br>"; 
?> 

Код PHP работает и дает результат массива из строки JSON. И это мой код Javascript

<script> 
var bmsdata = <?php echo $jsonDecoded ?>; 
alert(bmsdata["1"].id); // For check, i want to see the id of row 1 
</script> 

Но ничего не было показано выше. Я делаю право до сих пор? Или я пропустил что-то, чтобы передать значение с PHP на Javascript? Любое предложение будет оценено по достоинству.

ответ

1

Это один должен работать, так как я подстановок JSON в http://megarkarsa.com/gpsjson.php;)

<script> 
var bmsdata = <?php echo json_encode($jsonDecoded); ?>; 
alert(bmsdata.BMS["1"].id); // For check, i want to see the id of row 1 
</script> 

Вы просто забыли 'BMS' ключ;)

+0

Sob. В это время я просто смеюсь. : D Очень благодарю вас! Это отвечает на проблему. Мисс простая вещь может испортить все. – splim92

3

$jsonDecoded - это расшифрованный json.

Пожалуйста, измените

var bmsdata = <?php echo $jsonDecoded ?>; 

к

var bmsdata = <?php echo json_encode($jsonDecoded); ?>; 

или использовать уже существующее место переменной $jsonContent:

var bmsdata = <?php echo $jsonContent; ?>; 
+0

Спасибо за ваш ответ. Да, я попытался изменить эхо-линию, но, как и раньше, это не дало мне результата. Или, может быть, я делаю это неправильно или что? – splim92

+0

Вы уже пробовали 'var bmsdata = ; '? Определяется ли '$ jsonDecoded' в вашей части javascript, где вы пытаетесь его использовать? –

+0

есть. И причина, по которой он не дал никакого результата, просто потому, что я пропустил один ключ при инициировании оповещения. И, да, я изменил линию эха (удаляю 'json_encode' или' json_decode'), чтобы напрямую отразить значение '$ jsonContent'. Я обнаружил, что для моего дела не требуется «кодирование» или «декодирование». Большое спасибо! – splim92

1

Похоже, вы инъекционного декодированного, PHP-представление данных в ваш javascript. Вы, вероятно, (если хотите продолжать делать это таким образом), захотите повторить кодированную версию (jsonContent).

В конечном счете, вы можете пересмотреть подход. Получение данных через ajax часто является более легким способом работы с ним, так как вам не нужно беспокоиться о написании головоломки javascript через php, у которого есть всевозможные проблемы с экранированием, чтобы получить право.

+0

Благодарим вас за ответ. Я попытался повторить кодированную версию, но не дал мне никакого результата. Это странно. Можете ли вы указать мне пример объяснения для получения данных через ajax? спасибо – splim92

Смежные вопросы