你好每一个我想从javascript函数传递php数组。请帮我解决这个代码
if($check[0]!='')
{
$data=$check[0];
?>
<script type="text/javascript">
window.location="admin.php?page=add_service&$data=<?php echo $data ; ?> "
</script>
<?php
}
它适用于单个变量,但对于数组,它不起作用
答案 0 :(得分:4)
您可以在页面生成时直接将PHP数组转换为本机javascript数组:
<?php
$php_array = array('hi' => 'mom', 'good' => 'morning');
?>
<script type="text/javascsript">
var js_array = <?php echo json_encode($php_array); ?>
</script>
如果您需要在生成页面并将其发送到客户端之后的某个时间将数组从PHP传递到javascript,那么您需要使用AJAX,最好是通过jquery或mootools等工具包。
答案 1 :(得分:2)
做这样的事情:
function array_to_url_params($data){
$params = array();
foreach($data as $value)
$params[] = "data[]=".urlencode($value);
return join("&", $params);
}
<script type="text/javascript">
window.location="admin.php?page=add_service&<? echo array_to_url_params($data); ?> "
</script>
答案 2 :(得分:1)
你不能将数组转换为字符串,可以使用serialize();或$ data ['你想要的元素']
答案 3 :(得分:1)
你可以用AJAX做到这一点。 AJAX允许您在不重新加载页面的情况下获取内容。另外,要获取内容,您需要特殊的PHP文件,将数据返回到您网站上的AJAX脚本。你应该读一读:
JSON也可以在这里帮助你,它可以在一个简单的字符串中找到一个数组,你可以在PHP和JS上编码和解码它。
答案 4 :(得分:1)
Array是一个变量,但您不能在程序之间交换变量,而只能在字符串值之间交换变量。
因此,如果使用HTTP请求传递数据到查询字符串,则必须以某种方式对数组进行编码。两种可能的解决方案是
第一:
$data = urlencode(serialize($data));
但收到后需要$data = unserialize($_GET['data'])
。
但我更喜欢另一个,利用http_build_query()函数
$data = http_build_query(array('data'=>$data));
然后你的代码看起来像
<script type="text/javascript">
window.location="admin.php?page=add_service&<?php echo $data ?>"
</script>