【问题标题】:jQuery Serializing Brackets [ ] From Form Name Post to PHPjQuery 序列化括号 [] 从表单名称发布到 PHP
【发布时间】:2018-12-20 16:35:06
【问题描述】:

我正在序列化表单数据,输入名称中有括号,即 当我用 jquery 对其进行序列化以将其发布到我的 php 文件进行处理时,它看起来像这样 - test%5Btesting%5D=some input。当我尝试使用以下方式获取后端的 php 文件时,没有看到这些名称: echo $_POST['test[testing]'];

如果我尝试使用名称 test 获取信息,它将显示为一个数组。如何告诉php括号是字段名的一部分?

<input name="test[testing]">
echo $_POST['test[testing]'];

当我尝试抓取它时,我在后端的 php 文件没有看到这些名称

【问题讨论】:

  • 您如何序列化您的表单以及如何将其发布到服务器?

标签: php jquery


【解决方案1】:

POST 和 GET 数据中的 PHP 特殊情况方括号。

通过以下方式访问它:

$_POST['test']['testing']

这允许您使用 PHP 将反序列化为服务器端代码可以迭代的嵌套数组/关联数组结构的数据构造一个表单。

其他一些表单处理库也采用了这种格式,例如Express.js's body-parser library 有一个可选的 extended 模式支持这个。

PHP 不支持构建平面数据结构($_POST['test[testing]'] 可以使用),但您可以使用以下命令读取原始数据:

$post_body_string = file_get_contents("php://input");

……然后编写自己的 URL 编码表单数据解析器。

【讨论】:

  • 谢谢!它看起来非常像 JavaScript!不敢相信我没有意识到这一点。
  • 如果 ID 内部有另一组括号,如 form_fields[7029d77][]。我试过 $_POST['form_fields][7029d77][] 并得到一个语法错误。
  • 7029d77 不是十进制数,它需要在 PHP 中用引号引起来
  • 对不起,我输入得太快了,我的意思是所有内容后面的空括号,即 form_fields['7029d77'] [ -- empty -- ]。我在某处读到它可能是数组中的一个数组,我必须遍历它才能获得 POST 值?
猜你喜欢
  • 2018-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
  • 2016-12-14
  • 2018-05-04
相关资源
最近更新 更多