2016-06-12 6 views
-1

私は、実行時にデータベースデータを使用して数行のデータを取り込みました。各行にはボタンがあります。クリックすると、データベースからその行を削除します。そのボタンにdata-idを貼ります。クリックすると、ボタンにajaxリクエストが送信されます。しかし、私はnullのIDを取得します。私は次のコードを使用します。コンソールは、ユーザーIDを印刷するJavaScript

HTMLcodeigniter input-> post()がjquery ajaxのポストリクエストからヌルです

<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; 
    } 
} 

。 しかし、AJAXの応答コンソール版画

Object {is_error: true, message: null} 

に私が間違ってやっているでしょうか?私の貧しい英語を申し訳ありません。 TIA

+0

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

あなたは、Ajaxで 'DELETE'メソッドを使用しますが、あなたのメソッド名は' delete_client'です。これらのことをすべて調整してから私の答えを確認してください –

+0

特別な理由がないのに 'route.php'の' delete'から 'delete_client'にルーティングしました。 – ARiF

答えて

1

の代わりにis_numeric()を使用しての

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

を試してみてください。第二に取り出し、以下のあなたの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; 
}); 

から不要なのparamsを削除

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; 
    } 
} 

次試してみてください。

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

contentTypeprocessDataなど、フォーム、画像などなどが含まれ、ここで

+1

私は 'is_numeric()'の問題ではないと思っていますが、 'id'はPHPの' post'メソッドで 'null'なので、' json'と 'post'リクエストの問題です。これらのパラメータをajaxから削除すると動作します。どうもありがとう ! – ARiF

0

あなたは型キャストして値を変換することができる代わりに、

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

ありがとう、私は両方の方法で試してみました。それと同じ問題。 'console.log(client_id);'行にjqueryの 'client_id'を正しく取得します。 PHPの 'id'はnullになります。 – ARiF

0

まず{あまりにも:「遠く」}と一緒にイベントをクリックして添付せず、Ajaxリクエストを送信してみてください必要ないときに使用されるデータかをチェックサーバー側のバーで返信してください。 複数の要素が同じである理由を知りたいですか?代わりに クラス= "delete_btn"

+0

私の間違い。同じ名前の複数の 'id'が動作します。私はそれを変更します。ありがとう! この変更は問題を解決しませんでした。:( – ARiF

+0

私はあなたがそのURLにダミーデータを送信し、クリックイベント – Wakeel

+0

ああすることなく、第1の応答をチェック語った、申し訳ありません!それをチェック。 – ARiF

関連する問題