我有一大堆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代码,只是尽可能地说明我的问题。
答案 0 :(得分:2)
你走在正确的轨道上是的。但是,您需要进行一些更改。
首先在您的Javascript对象中用=
替换:
。
然后,您需要确保使用唯一的密钥名称。所以要么做action1
和action2
,要么更好地创建一系列这样的动作:
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定价非常便宜。