我有一个关于从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。
答案 0 :(得分:19)
要将数据结构从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>
这可用于正确地转义标量,数组,对象等。
答案 1 :(得分:1)
简单的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'
});
答案 2 :(得分:1)
有AJAX方法,还有回声方法。前者更灵活,而后者更简单,并且不需要您应对AJAX错误。
对于前者,这里有很多关于如何使用AJAX的例子。后者可以非常简单地实现:
<script type="text/javascript">
var phpVar = <?php echo ($phpVar); ?>;
</script>
适当的方法取决于您的javascript需要什么数据以及它需要什么。如果您需要进行大量的服务器交互,那么使用AJAX是您应该研究的途径。但是,如果您只需要初始化javascript的初始值,那么后一种方法实现起来要容易得多。