2016-06-12 5 views
-1

У меня есть несколько строк данных, заполненных с использованием данных базы данных во время выполнения. Каждая строка имеет кнопку. При нажатии кнопки я хочу удалить эту строку из базы данных. Я положил на эту кнопку data-id. При нажатии кнопки отправьте запрос ajax на php. Но я получаю null id в php. Следующий код, который я использую.

HTMLcodeigniter input-> post() is null from jquery ajax post request

<span id="delete_btn" class="btn btn-default" data-id="<?php echo $id; ?>"> 
    <i class="glyph-icon icon-close"> Delete</i> 
</span> 

JavaScript

$('#feedbackTable').on('click', '#delete_btn', function (event) { 

    var client_id = $(this).data('id'); 


    console.log(client_id); // I get the exact id 
    $.ajax({ 
     url: url + 'client/delete', 
     type: 'POST', 
     data: {'id' : client_id}, 
     dataType: 'json', 
     async: false, 
     cache: false, 
     contentType: false, 
     processData: false, 
     error: function (error_data) { 
      console.log(error_data); 
     }, 
     success: function (data) { 
      console.log(data); 
     } 
    }); 
    return false; 
}); 

Client.php

public function delete_client() { 
    if ($this->input->method(TRUE) == 'POST') { 
     $id = $this->input->post('id'); 

     if (is_numeric($id)) { 
      $id = intval($id); 
      echo json_encode(array(
       "is_error" => false, 
       "message" => $id 
      )); 
      return; 
     } else { 
      echo json_encode(array(
       "is_error" => true, 
       "message" => $id 
      )); 
      return; 
     } 
    } else { 
     echo json_encode(array(
      "is_error" => true, 
      "message" => "Invalid request" 
     )); 
     return; 
    } 
} 

консоли JavaScript выводит идентификатор пользователя. но асинхронность ответ консольных печатает

Object {is_error: true, message: null} 

, что я делаю неправильно? Извините за моего бедного английского. ТИА

+0

вы использовали 'delete' метод в AJAX, но ваше имя метода' delete_client'. Откорректируйте все эти вещи, а затем проверьте мой ответ. –

+0

Я отправил из 'delete' в' delete_client' в 'route.php' без какой-либо конкретной причины. – ARiF

ответ

1

Вместо использования is_numeric() вы можете преобразовать значение литьем типа. Попробуйте следующие

public function delete_client() { 
    if ($this->input->method(TRUE) == 'POST') { 
     $id = (int) $this->input->post('id'); 

     if (!empty($id)) { 
      echo json_encode(array(
       "is_error" => false, 
       "message" => $id 
      )); 
      return; 
     } else { 
      echo json_encode(array(
       "is_error" => true, 
       "message" => $id 
      )); 
      return; 
     } 
    } else { 
     echo json_encode(array(
      "is_error" => true, 
      "message" => "Invalid request" 
     )); 
     return; 
    } 
} 

Во-вторых удалить ненужные параметры из вашего AJAX

$('#feedbackTable').on('click', '#delete_btn', function (event) { 

    var client_id = $(this).data('id'); 


    console.log(client_id); // I get the exact id 
    $.ajax({ 
     url: url + 'client/delete', 
     type: 'POST', 
     data: {'id' : client_id}, 
     dataType: 'json', 
     error: function (error_data) { 
      console.log(error_data); 
     }, 
     success: function (data) { 
      console.log(data); 
     } 
    }); 
    return false; 
}); 

Вслед удалены.

 async: false, 
     cache: false, 
     contentType: false, 
     processData: false, 

contentType, processData и т.д. используется, когда форма содержит изображения и т.д. и т.п. Не требуется здесь

+1

Я не думаю, что это проблема с 'is_numeric()', но это проблема с запросом 'json' и' post', потому что 'id' является' null' в методе php 'post'. Удаление этих параметров из ajax работает. Большое спасибо ! – ARiF

0

попробовать

var client_id = $(this).attr('data-id'); 

вместо

var client_id = $(this).data('id'); 
+0

Спасибо, я пробовал в обоих направлениях. Еще одна проблема. Я правильно делаю 'client_id' в jquery в строке' console.log (client_id); '. но в php 'id' становится null. – ARiF

0

Сначала попробуйте отправить запрос Ajax, не подключая щелкнуть событие вместе с {тоже: «далеко»} данные затем проверить для бара на стороне сервера и ответьте мне. Похоже, чтобы knw, почему несколько элементов имеют одинаковый атрибут.

<span id="delete_btn" class="btn btn-default".. 

Вместо класса = "delete_btn"

+0

Моя ошибка. однако работает несколько идентификаторов с одинаковым именем. Я изменю это. Благодаря ! И это изменение не решило проблему.:( – ARiF

+0

Я сказал вам отправить фиктивные данные этому URL-адресу и проверить ответ первым без события click – Wakeel

+0

О, извините! Проверено. – ARiF