Передать id кнопки на сервер

282
14 апреля 2017, 22:31

Есть json-файл, на его основе вывожу в браузер значения и возле каждого значения кнопку "Удалить" (c id "delete-user + порядковый номер"). Далее мне нужно этот номер как-то отправить на сервер, чтобы знать, какого юзера удалять.

Так выглядит кнопка, которую генерирую:

'<button type="submit" class="button" id="delete-user' + index + '">'

Так выглядит функция клика по этой кнопке:

$('body').on('click', "button[id^='delete-user']", function() {
    //Получаем из id порядковый номер юзера
     var value = $(this).attr('id').replace('delete-user', '');
    GetDetails(value);
});

Так выглядит сам ajax-запрос:

function GetDetails(value){
$.ajax({
    type: "POST",
    url: "index.php",
    data: {test:value}
}).done(function () {
    console.log('success');
}).fail(function () {
    console.log('fail');
});
};

Вот PHP-код:

if( isset( $_POST['test'] ) )
{
echo 'Кнопка нажата!';
}

В итоге в консоль уходит 'success', но echo не всплывает. В чём может быть проблема?

Answer 1

Смотри, я б посоветовал сделать так: HTML/PHP (я так понял у тебя это index.php):

<button class="button button-delete-user" data-id="<?=$index?>">

JS код:

$('body').on('click', "button-delete-user", function() {
      var $this = $(this),
          id = $this.attr('data-id');
      GetDetails(id); // название функции не айс
})
function GetDetails(id) {
     $.ajax({
       type: "POST",
       url: "ajax.php",
       data: {action: 'deleteUser', id: id}
     }).done(function (status) {
       console.log(status);
     }).fail(function () {
       console.log('fail');
     });
}

тут я рекомендую обработчик вынести в отдельный файл, типа ajax.php со след. содержимым (тут уже как душе угодно):

<?
  if(isset($_REQUEST['action'])) {
       if($_REQUEST['action'] == 'deleteUser') {
            // запрос на удаление и проверь наличие $_REQUEST['id']
            echo 'Пользователь удален';
       }
  } else {
      echo 'Нет команды'; // как пример
  }
?>

а лучше ответ вообще отдавать json форматом, так ты можешь лучше обработать ответ на js

Если все же хочешь сделать на страницу index.php, то тогда используй след. конструкцию в php:

 if($_REQUEST['action'] == 'deleteUser') { // условия сам допиши какие нужны
      ob_clean();
      // все манипуляции с юзером
      echo 'Пользователь удален';
      die();
 }

тем самым тебе не будет отдаваться весь контент страницы index.php в ответ на ajax запрос

READ ALSO
Узнать, где именно в Google SpreadSheet произошли изменения

Узнать, где именно в Google SpreadSheet произошли изменения

Есть таблица mainTable, которая имеет много листовВ эти листы автоматом собираются данные из других таблиц (через IMPORTRANGE): у одного человека - одна...

159
Выборка из массива JS, jQuery

Выборка из массива JS, jQuery

Помогите сделать выборку из массива так, что-бы цифры из массива не повторялись в классахТо есть для каждого класса свое число из массива...

212
Отловить нажатие по картинке в TinyMCE

Отловить нажатие по картинке в TinyMCE

Добрый деньВесь вопрос в заголовке

201