Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP处理来自AJAX Jquery post的多维对象//数组_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

PHP处理来自AJAX Jquery post的多维对象//数组

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

我在JS中有一个大型多维数组对象,我正试图使用Ajax将其传递给PHP。一些数组值的键是写入的数组
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');