У меня вопрос о передаче данных с php на javascript. Я собираю некоторые данные из базы данных, и я форматирую их следующим образом:
for($i=0;$i<(sizeof($lt_periods_query['period_id']));$i++){ $period_id = $lt_periods_query['period_id'][$i]; $lt_id = $lt_periods_query['lt_id'][$i]; $period_name = $lt_periods_query['period_name'][$i]; $fDate = $lt_periods_query['fromDate'][$i]; $tDate = $lt_periods_query['toDate'][$i]; $minStay = $lt_periods_query['min_stay'][$i]; $nightly_rate= $lt_periods_query['nightly_rate'][$i]; if (strStartsWith($fDate, $currentYear)=='true'){ $year = $currentYear; } else if(strStartsWith($fDate, $nextYear)=='true'){ $year = $nextYear; } $temp_period_details = array(); $temp_period_details['period_id'] = $period_id; $temp_period_details['lt_id'] = $lt_id; $temp_period_details['period_name'] = $period_name; $temp_period_details['fromDate'] = $fDate; $temp_period_details['toDate'] = $tDate; $temp_period_details['min_stay'] = $minStay; $temp_period_details['nightly_rate'] = $nightly_rate; $periods[$year][$period_name] = $temp_period_details; }
И я могу видеть их, когда печатаю так:
echo "RULE for 6 days <br>"; $days= '5'; $selPeriod = 'off_peak'; $selYear = '2011'; echo $periods[$selYear][$selPeriod]['period_id']; echo "<br>"; echo $periods[$selYear][$selPeriod]['lt_id']; echo "<br>"; echo $periods[$selYear][$selPeriod]['period_name'];
Я знаю, что php работает на стороне сервера, а javascript работает на стороне клиента. Я хочу получить данные со стороны javascript, отправив некоторые параметры, подобные этому (я знаю, почему это не работает, но я не знаю, как я могу добиться такой передачи данных):
<script type="text/javascript"> $(function(){ getData(); function getData(){ var days= '5'; var selPeriod = 'off_peak'; var selYear = '2011'; //var xxx = '<?php echo $periods[\''+selYear+'\'][\''+selPeriod+'\'][\'fromDate\'] ;?>'; //var xxx = '<?php include($periods['2011']['off_peak'][''])?>; } });
Может ли кто-нибудь посоветовать мне способ сбора данных с php на javascript, отправив некоторые параметры.
Чтобы передать структуры данных из PHP в Javascript, введите значение JSON следующим образом:
<?php $xdata = array( 'foo' => 'bar', 'baz' => array('green','blue') ); ?> <script type="text/javascript"> var xdata = <?php echo json_encode($xdata); ?>; alert(xdata['foo']); alert(xdata['baz'][0]); // Dot notation can be used if key/name is simple: alert(xdata.foo); alert(xdata.baz[0]); </script>
Это можно использовать для правильного удаления скаляров, массивов, объектов и т. Д.
Существует метод AJAX, и есть метод эха. Первый более гибкий, в то время как последний намного проще и не требует от вас ошибок AJAX.
Для первого есть множество примеров вокруг того, как использовать AJAX. Последнее можно добиться достаточно просто:
<script type="text/javascript"> var phpVar = <?php echo ($phpVar); ?>; </script>
Какой подход является подходящим, зависит от того, какие данные необходимы вашему javascript и для чего он нужен. Если вам нужно много взаимодействовать с сервером, то работа с AJAX – это путь, который вы должны исследовать. Однако, если все, что вам нужно, это начальное значение для инициализации javascript, то последний подход намного проще реализовать.
Простой подход AJAX.
Поместите все свои данные в один массив. Затем используйте json_encode для кодирования данных в формате JSON.
$data_array = array(); //assigning your data to single array here $data_array['param1'] = 'value1'; echo json_encode($data_array);
Затем в вашем JavaScript-коде используйте AJAX для вызова сценария. Например, используйте для этого большую библиотеку jQuery (http://api.jquery.com/jQuery.getJSON/).
<script type="text/javascript"> $.getJSON('http://www.example.com/my_script.php', function(data) { alert(data.param1); //this should alert 'value1' });