2013-06-30 17 views
0

我的js代碼:通行證JavaScript數組用花括號鍵名到PHP

$(function(){ 
    var arr = new Array('jj', 'kk', 'oo'); 
    $.post('test12.php', {'arr[]': arr}, function(data){ 
     alert(data); 
    }); 
}); 

PHP代碼:

<?php 
echo print_r($_POST['arr']); 

的事情是,$後收到一個名爲key「的常用3 [] ',它應該在PHP中用作'arr []'而不是'arr',但'$ _POST ['arr []']'不起作用,'arr'起作用。似乎Jquery可能會做一些事情在發送一些東西給PHP之前,花括號'[]'。

其次,當我刪除'arr []'的單配額時,PHP不能通過使用$ _POST ['arr'];,接收任何東西,我不知道爲什麼?

在沒有花括號傳統的方式完成這個任務:

$.post('test12.php', {arr: arr}, function(data){ 
     alert(data); 
    }); 

它工作正常。

所以發送JavaScript數組到PHP,時候爲什麼用單引號和大括號困擾像

'arr[]' 

而不是使用簡潔的方式像編曲:ARR

我返回的結果是

Array(
    [0]=>jj 
    [1]=>kk 
    [2]=>oo 
) 
1 

注意數組下有1個,爲什麼?

+0

小注'[]'不是大括號,它們被稱爲方括號。'{}'是花括號 – chrislondon

+0

當使用jQuery時,你不會做單引號或方括號。 jQuery爲你處理它。使用方括號的唯一情況是當它在輸入字段中時,如:<輸入名稱=「arr []」value =「oo」/>' – chrislondon

回答

0

當你發送一個變量給php,其名稱類似於php數組語法,php會自動將它解析爲一個數組。該功能輕度記載: http://www.php.net/manual/en/faq.html.php#faq.html.arrays
http://www.php.net/manual/en/language.variables.external.php

你不能關閉該功能,雖然可以手工解析原始的二進制輸入流如果youre真的確定。

額外例如

<input name="foo[bar][3][baz]" value="d"> 

就像是最接近的PHP相當於

$_POST['foo']['bar'][3]['baz'] 
0

的jQuery的方式,PHP懂得它會自動序列化您的請求訪問,因此這樣的:

{arr: [1,2,3]} 

在後臺和後臺自動序列化爲arr[]=1&arr[]=2&arr[]=3 PHP可以通過$_POST['arr']作爲數組訪問它。

您之所以看到額外1的原因是因爲您的echoprint_r()的結果,即true。你可以只有這樣的代碼:

print_r($_POST['arr']);