【问题标题】:PHP doesn't echo the correct variable from arrayPHP 没有从数组中回显正确的变量
【发布时间】:2015-09-06 14:49:49
【问题描述】:

所以,我发送一个输入数组:

<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(函数.php):

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

现在假设我们在输入中输入“Hello”和“Bye”,所以它应该返回“Hello”和“Bye”,但它返回的是“q”和“u”。

var_dump 的输出是:

string(39) "question%5B%5D=Hello&question%5B%5D=Bye"

编辑 1

如果我使用.serialize(),我总是会得到“q”和“u”,但如果我使用.val(),我会得到每个单词的第一个和第二个字母

编辑 2

我什至尝试了没有htmlentities()的PHP代码,但结果和以前一样。

【问题讨论】:

  • 在你的问题中显示var_dump(($_POST['Question']);的输出
  • @JohnConde 我用var_dump 输出编辑了我的帖子
  • 为什么我会投票失败?????

标签: php jquery arrays ajax echo


【解决方案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);

这个例子没有经过测试,但它应该可以正常工作。

【讨论】:

  • 那么,我可以用什么来代替.serialize()??
  • 在 javascript 中使用 JSON.stringify( my_array ) 我的朋友。在 PHP 中,您可以使用 json_decode($_POST['question'], true)。这里:stackoverflow.com/questions/6937144/…php.net/manual/en/function.json-decode.php
  • 因此,您将 JavaScript 中的数据字符串化为 Json,将其发送到 PHP,将 Json 解码为数组,然后将 P. jensen 的 anwser 标记为好的 anwser。他看到一切都很好。
  • 哥们,别偷懒了。如果您不通过自己研究和编写来学习它,您将永远不会记住它。使用我给你的链接。
  • 我可以在 Jquery.post 中使用JSON.stringify() 吗??
猜你喜欢
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-23
  • 1970-01-01
  • 2014-06-26
  • 1970-01-01
  • 2017-05-06
相关资源
最近更新 更多