2017-03-22 13 views
0

私はこの機能をご希望します:codeigniter ajaxを使用してデータベースを更新してから

オプションを選択した後、すぐにデータベースを更新してから、特定のdiv内にすぐに表示します。どうすればこれを達成できますか?ここで

は私のHTMLです:

<select id="category1" name="cat1"> 
    <option>Hardware</option> 
    <option>Software</option> 
    <option>Network</option> 
</select> 

AJAXコード:

$('#category1').on('change',function(){ 
    var data = $("cat1").val(); 
    var ticket = '<?php echo $ticket_details[0]["cTicketNo"];?>'; 
    if(data){ 
     jQuery.ajax({ 
      type: "POST", 
      dataType: 'json', 
      url: "<?php echo base_url();?>User/TicketView/update_cate", 
      data: {data: data,ticket: ticket}, 
      success:function(response){ 
       alert('successful'); 
      }, 
      error: function(response){ 
       alert('tangina!'); 
      } 
     }); 
    } 

}); 

コントローラー:

function update_cate(){ 
    $this->TicketView_m->update_cat1(); 
    redirect($_SERVER['HTTP_REFERER']); 
} 

モデル:

function update_cat1(){ 
    $ticket_id = $_POST['ticket']; 
    var_dump($cat = $_POST['data']); 

    $this->db->set('vCategory',$cat); 
    $this->db->where('cTicketNo',$ticket_id); 
    $this->db->update('tconcerns'); 
} 

THanks for all help!

+0

'に'$( 'the-selector-of-the-div').html(data);' –

+0

真剣になぜあなたはAjaxリクエストの中でリダイレクトしていますか? – Beginner

+0

どうすればいいですか? – TheTruth

答えて

0

落としてくださいredirect($_SERVER['HTTP_REFERER']);、あなたはそれを必要としません。

まず、AJAXでは、別のページにリダイレクトせずにサーバーにデータを送信できます。

あなたのAJAXデータタイプに基づいて。それはJSONです。結果を得るには、json_encode(['result' => 'things you want to show'])のようにJSONにエンコードする必要があります。

その後、あなたはこのようなあなたの応答でそれにアクセスすることができます。

success:function(response){ 
    alert('successful'); 
    var res = response.result; //Access the JSON 
    $("#certainDiv").html(res); //Print to the div you want 
} 

そして、あなたのモデルに渡し、あなたのコントローラでPOSTリクエストを取得することも良いです:

function update_cate(){ 
    $ticket_id = $this->input->post('ticket'); 
    $cat1  = $this->input->post('cat1'); 
    $this->TicketView_m->update_cat1($ticket_id, $cat1); 

    echo json_encode(['result' => 'things you want to show']); 
} 
関連する問題