2011-03-23 100 views
0

你好每一个我想从JavaScript函数传递的PHP数组。请帮我对此代码从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 
} 

它适用于单变量,但数组它不工作

回答

1

你不能施放一个数组作为字符串,可以使用序列化();或$ data ['你想要的'元素]

+0

谢谢你的关心。是的,我可以通过单个元素,但我也想通过整个数组。你能指导我什么,你的意思是由serialize(),我该怎么做 – umar 2011-03-23 14:35:17

+2

然后,你必须编写一个PHP风格的unserialize()的JavaScript。改为使用json_encode - 直接将PHP数组转换为本地Javascript数组。 – 2011-03-23 14:35:39

+1

$ serialized = serialize($ data); $ data = unserialize($ _ GET ['data']); – 2011-03-23 14:36:55

1

你可以用AJAX做到这一点。 AJAX允许你在没有重新加载页面的情况下获取内容。同样为了获取内容,您将需要特殊的PHP文件,该文件将数据返回到您网站上的AJAX脚本。你应该阅读一下:

w3Schools

JSON也可以帮助你在这里,它可以很容易串,溜溜天亚社编码rperesent数组并在PHP和JS解码。

+1

http://w3fools.com/ – 2011-03-23 14:36:18

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> 
+1

如果url包含引号会怎么样? '''在URL中是完全可以接受的,并且会打破javascript。跳过整个循环/构建数组阶段,并使用'<?php echo json_encode($ data)?>'。这将负责转义任何javascript元字符并自动将其转换为原生javascript。 – 2011-03-23 14:40:17

+0

php已经内置了这个功能 – 2011-03-23 14:44:40

2

您可以直接变换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

数组是一个变量,但不能在程序之间交换变量,而只能是字符串值。

因此,如果将数据传递给带有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>