2011-03-23 132 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>