【问题标题】:Why isn't PHP receiving an array of values?为什么 PHP 不接收值数组?
【发布时间】:2016-06-05 13:50:14
【问题描述】:

我正在使用 ajax 将多个值传递给具有相同名称的 PHP。但是当我转储数组时,只显示最后一个值。

序列化形式:

genres=59&genres=13&genres=15&genres=14&genres=16&genres=17&genres=18&genres=19&genres=20&genres=21&genres=22&genres=23&genres=24&accepted-media=1&special-instructions=&g-recaptcha-response=&userid=62&action=search

**PHP*

"genres=" . var_dump(array($_REQUEST["genres"])) . "\n";

数组 (size=1)
0 => 字符串 '24' (length=2)

JavaScript

$("#form-enablers").on("submit", function () {
    $("#userid").val(localStorage.getItem("account-id"));
    var data = $("#form-enablers").serialize() + "&action=search";
    console.log(data);
    ajax('post', 'php/enablers.php', data, success, "Error searching: ");
    function success(table) {
        console.log(table);
        $('#table-list').empty().append(table);
        $("#writers-list").css({ "display": "block" });
    }
});

【问题讨论】:

  • 请求中需要genres[]=
  • 是的,不是吗?请详细说明。
  • genres[]=59?
  • 我不明白你的意思。请提供答案。
  • 需要genres=59[]&genres=13[]&genres=15[]&genres[]=14&genres[]=16...

标签: php ajax


【解决方案1】:

如果要在请求中传递值数组,则需要特殊语法。您需要在属性名称中添加方括号 [],以便将所有属性放入一个数组中。

在您的情况下,序列化数据应如下所示:

genres[]=59&genres[]=13&genres[]=15&genres[]=14&genres[]=16&genres[]=17&genres[]=18&genres[]=19&genres[]=20&genres[]=21&genres[]=22&genres[]=23&genres[]=24&accepted-media=1&special-instructions=&g-recaptcha-response=&userid=62&action=search

这样 $_REQUEST['genres'] 将包含一个值数组而不是单个值。

【讨论】:

  • 我将名称更改为 (
  • 如何序列化表单中的数据?
  • 我修改了问题以包含 ajax 调用。
【解决方案2】:

Click here, is similar to your question though is not in Ajax

重点是值的名称需要有方括号[]。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多