Я пытаюсь получить переменную массива PHP в переменной JavaScript.
Это мой код:
<html> <head> <script type="text/javascript"> function drawChart(row,day,week,month,date) { // Some code... } </script> </head> <body> <?php for($counter = 0; $counter<count($au); $counter++) { switch($au[$counter]->id) { case pageID.'/insights/page_active_users/day': $day[] = $au[$counter]->value; break; case pageID.'/insights/page_active_users/week': $week[] = $au[$counter]->value; break; case pageID.'/insights/page_active_users/month': $month[] = $au[$counter]->value; break; } } ?> <script> drawChart(600/50, '<?php echo $day; ?>', '<?php echo $week; ?>', '<?php echo $month; ?>', '<?php echo createDatesArray(cal_days_in_month(CAL_GREGORIAN, date('m',strtotime('-1 day')), date('Y',strtotime('-1 day')))); ?>'); </script> </body> </html>
Я не могу получить значение массива PHP.
Как исправить эту проблему?
Используйте JSON .
В следующем примере $php_variable
может быть любой переменной PHP.
<script type="text/javascript"> var obj = <?php echo json_encode($php_variable); ?>; </script>
В вашем коде вы можете использовать следующее:
drawChart(600/50, <?php echo json_encode($day); ?>, ...)
В случаях, когда вам нужно разобрать объект из строки JSON (например, в запросе AJAX), безопасный способ – использовать JSON.parse(..)
как JSON.parse(..)
ниже:
var s = "<JSON-String>"; var obj = JSON.parse(s);
вы можете преобразовать php-массивы в javascript, используя функцию json_encode () * php
<?php $phpArray = array( 0 => "Mon", 1 => "Tue", 2 => "Wed", 3 => "Thu", 4 => "Fri", 5 => "Sat", 6 => "Sun", ) ?> <script type="text/javascript"> var jArray= <?php echo json_encode($phpArray ); ?>; for(var i=0;i<6;i++){ alert(jArray[i]); } </script>
Для передачи данных между двумя платформами необходим общий формат данных. JSON – это общий глобальный формат для отправки данных с кросс-платформой.
drawChart(600/50, JSON.parse('<?php echo json_encode($day); ?>'), JSON.parse('<?php echo json_encode($week); ?>'), JSON.parse('<?php echo json_encode($month); ?>'), JSON.parse('<?php echo json_encode(createDatesArray(cal_days_in_month(CAL_GREGORIAN, date('m',strtotime('-1 day')), date('Y',strtotime('-1 day'))))); ?>'))
Это ответ на ваш вопрос. Ответ может выглядеть очень сложным. Вы можете увидеть простой пример, описывающий связь между сервером и клиентской стороной здесь
$employee = array( "employee_id" => 10011, "Name" => "Nathan", "Skills" => array( "analyzing", "documentation" => array( "desktop", "mobile" ) ) );
Преобразование в формат JSON требуется для отправки данных обратно в клиентское приложение, то есть JavaScript. PHP имеет встроенную функцию json_encode (), которая может конвертировать любые данные в формат JSON. Результатом функции json_encode будет строка, подобная этой.
{ "employee_id": 10011, "Name": "Nathan", "Skills": { "0": "analyzing", "documentation": [ "desktop", "mobile" ] } }
На стороне клиента функция успеха получит строку JSON. Javascript также имеет функцию JSON parsing JSON.parse (), которая может преобразовать строку обратно в объект JSON.
$.ajax({ type: 'POST', headers: { "cache-control": "no-cache" }, url: "employee.php", async: false, cache: false, data: { employee_id: 10011 }, success: function (jsonString) { var employeeData = JSON.parse(jsonString); // employeeData variable contains employee array. });
В следующем примере у вас есть массив PHP, а затем сначала создайте массив JavaScript массивом PHP:
<script type="javascript"> day = new Array(<?php echo implode(',', $day); ?>); week = new Array(<?php echo implode(',',$week); ?>); month = new Array(<?php echo implode(',',$month); ?>); <!-- Then pass it to the JavaScript function: --> drawChart(<?php echo count($day); ?>, day, week, month); </script>