2016-09-03 6 views
0

У меня есть система pm, и я бы хотел, чтобы все проверенные сообщения были удалены. Пока что он удаляет только один за раз и никогда не выбирается. Вместо этого он удаляет значение с самым младшим значением id. Я новичок в ajax, и вся помощь приветствуется.Функция удаления не работает должным образом - 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

Вы, возможно, потребуется изменить свою форму, чтобы сделать это. Вы должны передать флажки в свой PHP-скрипт в виде массива через ajax.

<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-скрипт для цикла через полученное значение массива. Вероятно, он ожидает целое число (один идентификатор), и вы собираетесь отправить ему массив.

Пересмотренный 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 будет иметь много пользователей. Извините, если мой вопрос был немым, я все еще учился. :) EDIT: у меня есть обмен сообщениями с идентификатором. Возможно, я мог бы добавить id в поле 'value'. – Millica

+0

Я пересмотрел свой ответ, чтобы включить javascript, который вы могли бы реализовать, чтобы обрабатывать ваши множественные флажки и отправлять их на ваш PHP. Чтобы ответить на ваш комментарий выше, PHP имеет директиву post_max_size в файле ini. Пока ваш общий размер данных POST не превышает этого, вы должны быть в порядке. Если вы зацикливаете каждый идентификатор, когда получаете его и удаляете их по отдельности в своем PHP, вы можете столкнуться с проблемами Timeout, хотя, если это действительно большой объем пользователей. Возможно, вам потребуется отредактировать сценарий php, чтобы удалить эти удаления. –

+0

И да, я бы поместил идентификатор пользователя в поле значения ввода, если это ключ, который вы используете, чтобы удалить его в своем приложении PHP. Это было бы проще. –

Смежные вопросы