为什么PHP不接收值数组?

时间:2016-06-05 13:50:15

标签: php ajax

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

序列化形式:

  

流派= 59&安培;流派= 13&安培;流派= 15&安培;流派= 14&安培;流派= 16&安培;流派= 17&安培;流派= 18&安培;流派= 19&安培;流派= 20&安培;流派= 21&安培;流派= 22&安培;流派= 23&安​​培;流派= 24&安培;接受介质= 1&安培;特殊指令=安培; G-验证码 - 响应=安培;用户ID = 62&安培;行动=搜索

** PHP *

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

数组 (size = 1)
  0 =>字符串'24'(长度= 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" });
    }
});

2 个答案:

答案 0 :(得分:2)

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

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

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'] 将包含一组值而不是一个值。

答案 1 :(得分:0)

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

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