在AJAX请求中提交多个POST值

时间:2013-12-12 21:34:42

标签: php ajax post

我有一大堆AJAX请求,使用“actions”提交给我的functions.php文件。然后在我的functions.php文件中,我有许多代码块,如下所示。

当我查看开发人员工具时,我的functions.php文件也被多次调用(每个AJAX POST一个)。我正在考虑在上线时使用Amazon S3,并根据发送的POST请求收取费用。另一个问题是,我不确定我用所有这些代码块和相关的AJAX请求编写我的functions.php文件的方式是最好的方法。我可以将这些代码块放在一个函数或类中,并以某种方式将AJAX POSTS请求合并到几个POST请求中吗?

if(isset($_POST['action']) && ($_POST['action'] == 'delete_account')) {


        require("config.php");
        require("database.php");

        $deleteAccount = $_POST['account'];


        try {
            $results = $db->prepare("DELETE FROM account WHERE account_id_PK = ?");
            $results->bindValue(1, $deleteAccount);
            $results->execute();
        } catch(Exception $e) {
            echo "ERROR: Data could not be removed from the database. " . $e;
            exit;
        }
        echo $deleteAccount;

你能做点像......

$.AJAX({
data: {action= "delete_account", ... action="add_account"...}
});

显然上面的内容不是我的实际ajax代码,只是尽可能地说明我的问题。

1 个答案:

答案 0 :(得分:2)

你走在正确的轨道上是的。但是,您需要进行一些更改。

首先在您的Javascript对象中用=替换:

然后,您需要确保使用唯一的密钥名称。所以要么做action1action2,要么更好地创建一系列这样的动作:

data: { actions : ["delete_account", "add_account"] }

然后服务器端意识到你有一个数组$_POST['actions']

所以你可以这样做:

if(is_array($_POST['actions']) && in_array("delete_account", $_POST['actions'])) {
   // process the delete

附注:关于S3定价,您确实意识到他们向两千 POST请求收取一分钱吗?我只是为了使代码简洁。但如果它真的让你感到困惑,你可能会重新考虑这一点。 POST请求的S3定价非常便宜。