使用AJAX创建多层关联对象

时间:2016-03-16 作者:iszwnc

我想创建一个多层关联对象$.post 方法使用WordPress,以使我的代码更干净。问题是,我不知道如何让这些值在后端进行操作。

这就是我想做的my_query.js 文件,其中包含并处理AJAX 要求

$.post( MyAjax.ajaxurl, {
    action: \'my_action\',
    someValue: {
        one: \'Some Value One\',
        two: \'Some Value Two\',
        three: \'Some Value Three\',
        four: \'Some Value Four\',
    }
} );
这是当前的解决方案,我DO NOT 希望在我的代码上实现。

$.post( MyAjax.ajaxurl, {
    action: \'my_action\',
    someValueOne: \'Some Value One\',
    someValueTwo: \'Some Value Two\',
    someValueThree: \'Some Value Three\',
    someValueFour: \'Some Value Four\'
} );
在后端获取这些值的唯一方法是使用第二个选项并在.php 文件

$someValue = array(
    \'one\'   => $_POST[ \'someValueOne\' ],
    \'two\'   => $_POST[ \'someValueTwo\' ],
    \'three\' => $_POST[ \'someValueThree\' ],
    \'four\'  => $_POST[ \'someValueFour\' ]
);

echo $someValue[ \'one\' ];

wp_die();
但是。。。到底是什么问题IDO NOT 了解如何访问AJAX Data Object 在我的内部.php 通过使用第一个示例(我想这样做),它只在使用第二个示例时起作用。我怎样才能退回someValue 对象内部.php 使用第一个AJAX Request 实例

2 个回复
最合适的回答,由SO网友:iszwnc 整理而成

实际上,我找到的解决方案非常简单,不需要太多。由于某种原因,我无法检索AJAX Function Request 在后端。

JavaScript代码

如下所示,我定义了someValue 财产正是我想要的,非常干净漂亮。

$.post( MyAjax.ajaxurl, {
    action: \'my_action\',
    someValue: {
        one: \'Some Value One\',
        two: \'Some Value Two\',
        three: \'Some Value Three\',
        four: \'Some Value Four\'
    }
} );
PHP代码我一定忘了我可以关联Data Object 作为Array 在我的后端功能中。

$someValue = array(
    \'one\'   => $_POST[ \'someValue\' ][ \'one\' ],
    \'two\'   => $_POST[ \'someValue\' ][ \'two\' ],
    \'three\' => $_POST[ \'someValue\' ][ \'three\' ],
    \'four\'  => $_POST[ \'someValue\' ][ \'four\' ]
);

wp_die();
如果您不确定从AJAX Request. 我建议你像我们的朋友那样@mmm 问我,只是var_dump()print_r() 这个$_POST 超全局,然后你会看到你是否真的得到了什么。

SO网友:Mark Kaplun

如果您想传递一个复杂的值,最好的方法可能是jsonify它。类似于

$.post( MyAjax.ajaxurl, {
    action: \'my_action\',
    someValue: JSON.stringify({
        one: \'Some Value One\',
        two: \'Some Value Two\',
        three: \'Some Value Three\',
        four: \'Some Value Four\',
    })
} );
然后在服务器端用

$someValue = json_decode($_POST[\'someValue\']);

在这一点上$someValue 应该是要传递的数组。