php数组传给该函数,将PHP数组传递给JavaScript函数

本问题已经有最佳答案,请猛点这里访问。

我试图将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代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值