PHP处理来自AJAX Jquery post的多维对象//数组
我在JS中有一个大型多维数组对象,我正试图使用Ajax将其传递给PHP。一些数组值的键是写入的数组PHP处理来自AJAX Jquery post的多维对象//数组,php,jquery,ajax,wordpress,Php,Jquery,Ajax,Wordpress,我在JS中有一个大型多维数组对象,我正试图使用Ajax将其传递给PHP。一些数组值的键是写入的数组test[key],在PHP中,我希望它们被读取为test=>array([key]=>123)。注意,我在Wordpress工作 工作示例 JS: PHP打印输出: [action] => save [test] => Array ( [key1] => Array ( [0] => 123
test[key]
,在PHP中,我希望它们被读取为test=>array([key]=>123)
。注意,我在Wordpress工作
工作示例
JS:
PHP打印输出:
[action] => save
[test] => Array
(
[key1] => Array
(
[0] => 123
[1] => 234
)
)
[action] => save
[data] => Array
(
[test[key1] => Array
(
[0] => 123
[1] => 234
)
)
但是,我想在对象的第二级发送所有的测试[key1]
(以及更多的数据)。我有很多数据,需要对它们进行相应的分组
不起作用示例
JS:
PHP打印输出:
[action] => save
[test] => Array
(
[key1] => Array
(
[0] => 123
[1] => 234
)
)
[action] => save
[data] => Array
(
[test[key1] => Array
(
[0] => 123
[1] => 234
)
)
这似乎真的很难解释,但当PHP不在数组的顶层时,它似乎没有正确解析数组键。我做错什么了吗//有办法解决吗?我可以提供更多的见解,如果需要的话,我试图使这一点尽可能清楚
打印数据数组的键时,它会打印它们,而不打印最后的
]
。因此,它显示的是test[key1
,而不是我所期望的。也许它们在某个地方被剥离了?我认为您需要对数据进行字符串化
var request = $.ajax({
url: settings.get('ajaxurl'),
data: JSON.stringify(args),
type: 'post',
success: function(response) { // }});
然后使用使其在PHP中有用
编辑:
这可能会让你去你想去的地方
var args = {
'action' : 'save',
test : {
key1 : [
'123',
'abc' ]
} }
由于JavaScript不允许关联数组。请尝试此参数,这将给出多维数组结果
var args = {
'action' : 'save',
'data' : {
'test': {
'key1' : ['123', 'abc']
}
}
}
PHP做得不错,也许你就是那个有点confused@RiggsFolly我编辑了我的标题-我不是想责怪PHP,我肯定认为我做错了什么。在
args
中,您试图创建两个同名的属性test[key1]
这在任何语言中都是不合法的,是吗?@RiggsFolly好吧,它只会覆盖它…但你是对的-在试图简化我的代码时,我确实犯了那个错误。我编辑它是为了反映我实际在做什么。jQuery应该为你做所有这些我尝试了这一点-但我无法得到WP使用的stringify和操作来正常工作(可能是另一个问题,但我想先弄清楚我做错了什么)。因此我最终实现了这一点——从某种意义上说,斜杠没有被剥离,但在PHP中解析JSON后,它没有按照我的要求读取数组,只是将键描述为字符串。test[key1]
我不是以数组的形式手动创建此对象,因此需要循环遍历每个键并将其拆分。我不完全确定如何执行此操作(可能是正则表达式)-因为我不确定密钥对是什么。您必须创建一个与args相同的对象。如果您能向我发送完整的代码,那么将帮助您。我正在从input
attributes上的name
中抓取密钥。也许这足以从?var key=$('input').attr('name');