本问题已经有最佳答案,请猛点这里访问。
我试图将PHP数组变量放入JavaScript变量中。
这是我的代码:
function drawChart(row,day,week,month,date)
{
// Some code...
}
for($counter = 0; $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;
}
}
?>
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')))); ?>');
我无法获得PHP数组的价值。
我该如何解决这个问题?
使用JSON。
在以下示例中,$php_variable可以是任何PHP变量。
var obj = <?php echo json_encode($php_variable); ?>;
在您的代码中,您可以使用如下所示:
drawChart(600/50, <?php echo json_encode($day); ?>, ...)
如果您需要从JSON字符串解析对象(如在AJAX请求中),安全的方法是使用JSON.parse(..),如下所示:
var s ="";
var obj = JSON.parse(s);
简单地写var obj = ;会有什么不利? PHP不会以脚本可解析的方式安全地编码JSON对象吗?
是的,就是这样。但我的意图是将JSON.parse()作为一种从字符串解析的安全方法。感谢您的指点,我将编辑我的帖子。
var data = ;返回错误:SyntaxError:意外的令牌<
我也收到了这个错误(意外的令牌
@RemusRigo&Nuno:猜测一下,你在PHP标签中打开PHP标签吗?无论如何,请发一个新问题。
您可以使用json然后使用以下命令将其转换回数组:var arr = Object.keys(obj).map(function(k){return obj [k]});
您可以使用json_encode PHP函数将PHP数组传递给JavaScript。
$phpArray = array(
0 =>"Mon",
1 =>"Tue",
2 =>"Wed",
3 =>"Thu",
4 =>"Fri",
5 =>"Sat",
6 =>"Sun",
)
?>
var jArray = <?php echo json_encode($phpArray); ?>;
for(var i=0; i
alert(jArray[i]);
}
你能帮我吗? permission[1]=0 php数组变成像这个"permission":{"1":["0"]}的对象,而permission[0]=0仍然是数组。
嘿@shyammakwana.me您可能已经创建了一个嵌套数组,在json_encode()之前检查print_r($ array)并查看所形成的数组是否与上面相同然后它将正常工作。
嗨@Tarun感谢回复,是的,我的数组就像$p[1][0] = 0 ;,它在我的JS中提供了对象,它是嵌套的。怎么克服这个?
两个平台之间的数据传输需要通用数据格式。 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"
]
}
}
在客户端,success函数将获取JSON字符串。 Javascript还有JSON解析函数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数组,然后首先通过PHP数组创建一个JavaScript数组:
day = new Array(<?php echo implode(',', $day); ?>);
week = new Array(<?php echo implode(',',$week); ?>);
month = new Array(<?php echo implode(',',$month); ?>);
drawChart(<?php echo count($day); ?>, day, week, month);
使用PHP时使用Ajax有什么意义,什么时候可以直接将PHP注入脚本?
如果不使用ajax,则无法在按钮单击时执行php代码