2013-12-12 23 views
0

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

当我查看开发人员工具时,我的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代码,只是说明尽可能地我的问题。

回答

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定价是非常便宜的。

+0

好的,那么你将如何添加数据值发送到PHP文件?另外,你会如何推荐我重构我的PHP代码?或者我应该保持原样? – hyphen

+0

@hyphen我刚刚添加到我的答案,显示如何现在就可以查找这些服务器端。 – jszobody

+0

关于S3定价,我并不关心这个问题,而是关于尽可能使用最有效的代码,但是,我确实只有一个页面的很多请求。如果我结束了很多用户,我可以看到它迅速增长。只是想尽早考虑这个问题,因为它相对容易改变。 – hyphen