【问题标题】:Post array with Ajax but PHP gets string使用 Ajax 发布数组但 PHP 获取字符串
【发布时间】:2020-12-21 00:01:38
【问题描述】:

我将几个变量从 Ajax 发布到 PHP,其中一个是数组。然而 PHP 看到的是字符串而不是数组。我不知道出了什么问题。

在 Firefox 开发控制台中看到的 Ajax 字符串:

表单数据:

id=106
category_name=windows
category_friendly_name=Windows+product
show_for_ids=4
show_for_ids=7
show_for_ids=10
show_for_ids=12
is_admin_only=0
action=edit

请求负载

id=106&category_name=windows&category_friendly_name=Windows+product&show_for_ids=4&show_for_ids=7&show_for_ids=10&show_for_ids=12&is_admin_only=0&action=edit

PHP:

var_dump($_POST['show_for_ids']);

输出:

string(2) "12"

使用Multi-select plugin for TableEditJquery-multi-select

我错过了什么?

【问题讨论】:

  • 对于数组,您的数据必须是show_for_ids[]=4 show_for_ids[]=7 等。当前下一个值只是覆盖了上一个。可能你在name 属性中忘记了[]
  • @charlietfl 标题是 AJAX 并且有一个 ajax 标签。
  • 展示如何创建有效负载。如果使用 data 的对象,它应该被 jQuery 正确序列化,这样你就会收到一个数组
  • 谢谢,我必须修改 jquery-tabledit 才能让它工作

标签: php jquery ajax tabledit


【解决方案1】:

感谢@u_mulder 的评论,我通过修改Github 上为jquery-tabledit 第140 行提供的代码解决了这个问题。

我变了

input = '<select class="multiSelect tabledit-input ' + settings.inputClass + '" name="' + settings.columns.editable[i][1] + '" style="display: none; width:auto;" disabled multiple >';

进入

var input = '<select class="multiSelect tabledit-input ' + settings.inputClass + '" name="' + settings.columns.editable[i][1] + '[]" style="display: none; width:auto;" disabled multiple >';

【讨论】:

    猜你喜欢
    • 2019-03-30
    • 2016-05-27
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多