2015-10-24 4 views
0

Попытка автоматического ввода значения из базы данных при выборе чего-либо или изменении выбора. Вот мой код. Не работает.Codeigniter JQuery Ajax не работает

Html часть:

<select id="product"> 
    <option value="">Select A Product</option> 
    <option value="Abc">Abc</option> 
    <option value="Def">Def</option> 
</select> 
<input type="text" id="quantity"> 

JS часть:

$('#product').on('change', function() { 
     var quan = $(this).val(); 
     $.ajax({ 
      url: 'order/ajaxReq/'+quan, 
      type: 'post', 
      dataType: 'json', 
      data: {quan: quan}, 
     }) 
     .success(function(data) { 
      $('#quantity').val(data); 
     }) 

    }); 

часть Контроллера:

public function ajaxReq() 
    { 
     $data['value'] = $this->order->getVal(); 
     foreach ($value as $row) { 
      echo $quantity = $row->quantity; 
     } 
    } 

Модель Часть:

public function getVal() 
    { 
     $quantity = $this->uri->segment(3); 
     $this->db->where('quantity',$quantity); 
     $query = $this->db->get('order_products'); 
     return $query->result(); 
    } 

ответ

1

Есть пара вещей, которые нужно исправить. Следуй этим шагам. При использовании кода JS следующий фрагмент кода:

$('#product').on('change', function() { 
    var quan = $(this).val(); 
    $.ajax({ 
     url: '<?php echo base_url("order/ajaxReq")?;>',// <--- here 
     type: 'post', 
     data: {quan: quan},// we send data parameter using data properties 
     /* or use 
     success : function(data) { 
      $('#quantity').val(data); 
     }*/ 
    }) 
    /*.success(function(data) { //<---- .success now replaced by .done, use that instead, otherwise declare these as a ajax properties 
     $('#quantity').val(data); 
    })*/ 
    .done(function(data) { //<---- we use .done here 
     $('#quantity').val(data); 
    }) 
}); 

В контроллере:

public function ajaxReq() { 
    $quan = $this->input->post('quan'); 
    $value = $this->order->getVal($quan); 
    echo $value['quantity']; //<-- here these value will available on ajax success 
} 

И, наконец, внутри вашей модели:

public function getVal($quan){ 
    $this->db->select('*'); // or select by fields 
    $this->db->from('order_products'); 
    $where = array('quantity' => $quan); 
    $this->db->where($where); 
    $query = $this->db->get(); 
    return $query->row_array(); 
} 
+0

как можно добавить более одной переменной в АЯКС данных ?, Я добавил такие данные: {city: city, area: area}, 'no process. но отлично работает для одной переменной. – 151291

+0

'данные: {город: город, площадь: площадь}', это должно работать. Какие у вас ошибки? –

+0

Да, это работает, из-за ajax трудно найти ошибки от контроллера и модели. – 151291

Смежные вопросы