2016-05-25 9 views
0

私はdata-id属性を持つボタン要素を持っています。jquery ajax postを使用してcodeigniterのコントローラメソッドにdata-idを送信する必要があります私はどのような理由があり、どのように私はこの問題を解決することができますか?私の設定ファイルで私はベースのURLを設定し、インデックスを書き換えます.PHPのhtaccessファイルを使用して:codeigniterのajaxを使用してコントローラメソッドにdata-id属性値を渡す

を私は

$config['base_url'] = 'http://localhost/mycodeigniter/ci/' 
0]ボタンをクリックした後、アラート( '成功')を得ますか

管理コントローラ:

class Admin extends CI_Controller{ 


     public function processReq(){ 
      $this->load->view('admin/processReq'); 

     } 

    } 

ボタン(no形式要素):

<button type="button" data-id='approved' class="approved buttons">Approve</button> 

AJAX方法:

$(".buttons").click(function(event){ 
    var status=$(this).data('id'); 

    $.ajax({ 
     url:"<?php echo base_url('admin/processReq') ;?>", 
     type: "POST", 
     data: { 
      status: status 
     }, 

     success: function(data) { 
      alert('success'); 
     }, 
     error: function(xhr, status, error) { 
      var error=xhr.responseText; 
      alert(error); 
      } 
    }); 
}); 

enter image description here

+0

'xhr.responseText'は何を得ますか? – Ohgodwhy

+0

何もありません。成功から警告( '成功')を得ることができました。 –

+0

ajaxオブジェクトに 'dataType:html'を設定した場合、戻しますか?また、ネットワークインスペクタは何を表示しますか? – Ohgodwhy

答えて

0

コントローラが送信したためアラートを取得ブラウザーにサーバーコード200の応答を送ります。そのヘッダレスポンスコードは、AJAXにsuccess関数を呼び出すよう指示します。 $this->load->view('admin/processReq');はOK(コード200)の出所です。

このコントローラーはこれを処理する別の方法を示しており、processReq()からの返信に基づいて反応することができます。確実

$.ajax({ 
    url:"<?php echo base_url('admin/processReq') ;?>", 
    type: "POST", 
    dataType: 'json', 
    data: { 
     status: status 
    }, 

があなたのアヤックスsuccess関数が失敗したことを示すために、この

success: function(data) { 
    if(data.results === 'success'){ 
    alert('success'); 
    } else { 
    alert('success'); 
    } 
}, 

別の方法を行うことができ、これが動作するために - dataType: 'json'を -

class Admin extends CI_Controller 
{ 
    public function index() 
    { 
    $this->load->view('admin/processReq'); //if this really is the view file 
    } 


    public function processReq() 
    { 
    $status = this->input->post('status'); 
    //I am assuming that data('id') is '1' or '0' since you 
    //don't describe what it actually is I had to make something up. 
    if($status === '1'){ 
     echo json_encode(array('results' => 'success')) ; 
    }else{ 
     echo json_encode(array('results' => 'fail')) ; 
    } 
    } 

} 

あなたは1つのAjaxのオプションを追加する必要があります400または500(エラー)の範囲のサーバーコードでヘッダーを出力することです。これを行うと、ajax error関数が呼び出されます。 SOには、それを達成するための多くの例があります。

関連する問題