2015-09-06 50 views
-2

呼應正確的變量所以,我送輸入數組:PHP不從陣列

<input type="text" placeholder="Question" name="question[]" value="" /> 
<input type="text" placeholder="Question" name="question[]" value="" /> 

與這個jQuery代碼:

$.post("function.php",{Question:$("[name^='question']").serialize()},function(data){ 
    $("#construct").append(data); 
    alert('done'); 
}); 

,但是當我嘗試echo的變量數組它打印不正確 PHP(function.php):

$Question=htmlentities($_POST['Question'],ENT_QUOTES,"UTF-8"); 
echo $Question[0]."<br>"; 
echo $Question[1]."<br>"; 

現在想象一下,我們輸入 「你好」 和輸入中的「Bye」所以它應該返回「Hello」和「Bye」,但它會返回「q」和「u」。

var_dump了說就是:

字符串(39) 「的問題%5B%5D =你好&問題%5B%5D =再見」

編輯1

如果我使用.serialize()我總是得到「q」和「u」,但如果我使用.val(),我會得到每個單詞的第一個和第二個字母

編輯2

我甚至嘗試了PHP代碼,而無需htmlentities()但結果是和以前一樣。

+0

顯示的var_dump'輸出(($ _ POST [ '問題']);'你的問題 –

+0

@JohnConde我編輯我的職務與'var_dump'輸出 – NavidIvanian

+0

爲什麼我會收到反對票????? – NavidIvanian

回答

1

您用JavaScript對您的輸入進行了序列化,因此輸入PHP的輸入是字符串,而不是數組。所以你需要將它解碼成一個數組。使用JSON是一種好方法。

懶惰的:

的JavaScript

var normalArray = $('#FormID').serializeArray(); 
var jsonArray = JSON.stringify(normalArray); 
$.post("function.php",{ 
    data: jsonArray 
}); 

PHP

$normalArray = json_decode($_POST['data'], true); 

這個例子不是測試,但它應該在一般的工作。

+0

所以,我可以用什麼來代替'.serialize()'?? – NavidIvanian

+0

在JavaScript中使用'JSON.stringify(my_array)'我的朋友,而在PHP中,你做'json_decode($ _ POST ['question'],true)' 。 Here: http://stackoverflow.com/questions/6937144/sending-javascript-object-to-php-via-ajax http://php.net/manual/en/function.json-decode。 php –

+0

您能否在我的帖子中給我一個示例??? – NavidIvanian