PHP没有从数组中回显正确的变量

时间:2015-09-06 14:49:49

标签: php jquery arrays ajax echo

所以,我发送了一系列输入:

<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代码,但结果与以前相同。

1 个答案:

答案 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);

此示例未经过测试,但它应该可以正常使用。