使用 Ajax 发布数组但 PHP 获取字符串
Posted
技术标签:
【中文标题】使用 Ajax 发布数组但 PHP 获取字符串【英文标题】:Post array with Ajax but PHP gets string 【发布时间】: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 TableEdit 和Jquery-multi-select
我错过了什么?
【问题讨论】:
对于数组,您的数据必须是show_for_ids[]=4 show_for_ids[]=7
等。当前下一个值只是覆盖了上一个。可能你在name
属性中忘记了[]
。
@charlietfl 标题是 AJAX 并且有一个 ajax
标签。
展示如何创建有效负载。如果使用 data
的对象,它应该被 jQuery 正确序列化,这样你就会收到一个数组
谢谢,我必须修改 jquery-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 >';
【讨论】:
以上是关于使用 Ajax 发布数组但 PHP 获取字符串的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中使用来自 AJAX 请求的 JSON 字符串 [关闭]