2016-09-03 20 views
0

我有一個pm系統,我想要刪除所有選中的郵件。到目前爲止,它只能一次刪除一個,而不會選擇一個。相反,它會刪除最年輕的id值。我是新來的阿賈克斯和所有幫助表示讚賞。刪除功能無法正常工作 - Ajax

這裏是我的功能:

function deletePm(pmid,wrapperid,originator){ 
    var conf = confirm(originator+"Press OK to confirm deletion of this message and its replies"); 
    if(conf != true){ 
     return false; 
    } 
    var ajax = ajaxObj("POST", "php_parsers/pm_system.php"); 
    ajax.onreadystatechange = function() { 
     if(ajaxReturn(ajax) == true) { 
      if(ajax.responseText == "delete_ok"){ 
       _(wrapperid).style.display = 'none'; 
      } else { 
       alert(ajax.responseText); 
      } 
     } 
    } 
    ajax.send("action=delete_pm&pmid="+pmid+"&originator="+originator); 
} 

回答

1

您可能需要修改您的形式,以做到這一點。您必須通過ajax將複選框作爲數組傳遞給PHP腳本。

<input type='checkbox' name='pm[]' value='1'>1<br> 
<input type='checkbox' name='pm[]' value='2'>2<br> 
<input type='checkbox' name='pm[]' value='3'>3<br> 

通過這樣的複選框,PHP可以處理數組作爲這樣的:

$_POST['pm']; 

您將需要修改你的AJAX腳本能夠發送陣列,並可能改變你的PHP腳本循環通過它接收的數組值。它可能期望一個整數(一個ID),並且您將要發送一個數組。

修訂的Ajax方法:

$("#submit").on('click',function(e) { 

    e.preventDefault(); 

    var data = { 
    'pmIds': $("input[name='pm[]']").serializeArray(), 
    'action' : 'delete_pm', 
    'originator' : 'whatever' 
    }; 

    $.ajax({ 
    type: "POST", 
    url: 'php_parsers/pm_system.php', 
    data: data, 
    success: function(result) { 
     window.console.log('Successful'); 
     }, 
    }); 
}) 
+0

感謝羅伯特,您的回覆!這種方法對於無限質量的消息有好處嗎? pm系統將有許多用戶。對不起,如果我的問題是愚蠢的,我仍然在學習。 :)編輯:我有消息分配一個ID。也許我可以將id添加到'value'字段中。 – Millica

+0

我已經修改了我的答案,以包含您可以實現的用於處理多個複選框併發送到PHP的JavaScript。要回答上面的評論,PHP在ini文件中有一個'post_max_size'指令。只要你的POST數據總量不超過這個數量,你應該沒問題。如果您在接收到每個ID時循環讀取每個ID並在PHP中單獨刪除它們,則可能會遇到Timeout問題,但該用戶數量確實很大。您的php腳本可能需要進行編輯以對這些刪除進行分塊。 –

+0

是的,我會將用戶的ID放在輸入的值字段中,如果這是您用來在PHP應用程序中刪除它的鍵。這將是最簡單的。 –