2015-09-06 89 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