所以,我发送了一系列输入:
<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>";
现在想象一下我们进入&#34;你好&#34;和&#34;再见&#34;在输入中所以它应该返回&#34;你好&#34;和&#34;再见&#34;但它返回&#34; q&#34;和&#34;你&#34;代替。
var_dump
输出是:
string(39)&#34; question%5B%5D = Hello&amp; question%5B%5D = Bye&#34;
修改1
如果我使用.serialize()
我总是得到&#34; q&#34;和&#34;你&#34;但如果我使用.val()
,我会得到每个单词的第一个和第二个字母
修改2
我甚至尝试了没有htmlentities()
的PHP代码,但结果与以前相同。
答案 0 :(得分: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);
此示例未经过测试,但它应该可以正常使用。