2015-04-03 17 views
0

我已經用這很多了。通過使用ajax和jquery異步查詢數據庫,並將結果返回到codeigniter查看

我想在CI模式發送ID並獲得通過CI控制器返回值

我的看法是

 <script type="text/javascript"> 
      function showsome(){ 
       var rs = $("#s_t_item option:selected").val(); 
       var controller = 'items'; 
       var base_url = '<?php echo site_url(); ?>'; 

       $.ajax({ 
         url : base_url+ '/' + controller+ '/get_unit_item', 
        type:'POST', 
        contentType: 'json', 
        data: {item_id: rs}, 
        success: function(output_string){ 
         //$('#result_area').val(output_string); 
         alert(output_string); 
        } 
       }); 

      } 

     </script> 

我的控制器方法是

public function get_unit_item() 
     { 
     $received = $this->input->post('item_id'); 

     $query = $this->units_model->get_unit_item($received); 
     $output_string = ''; 
     if(!is_null($query)) { 
     $output_string .= "{$query}"; 
     } else { 
     $output_string = 'There are no unit found'; 
     } 
     echo json_encode($output_string); 
} 

而且我的模型功能負責人

public function get_unit_item($where){ 
    $this->db->where('item_id',$where); 
    $result = $this->db->get($this->tablename); 
    if($result->num_rows() >0){ 
     $j = $result->row(); 
     return $j->unit_item_info ; 
    } 
} 

的Html代碼

<?php $id = 'id="s_t_product" onChange="showsome();"'; 
     echo form_dropdown('product_id[]', $products, $prod,$id); ?> 

我試圖只用ID,但沒能火那麼傳遞函數的onchange似乎挑項目,火

使用Firebug我可以看到POST請求發送ITEM_ID = 2但響應長度爲0和用PHP結果代碼302

POST enter image description here RESPONSE enter image description here

我怎樣才能實現這一目標(該模型被裝載到構造器)

+1

看看這個http://stackoverflow.com/questions/9143438/302-found-response – Raja 2015-04-03 20:04:24

+1

你向我們展示getprice的請求,但是,您發佈的ajax代碼會向get_unit_item發出請求。請給我們一致的信息。 – Cristik 2015-04-03 20:18:25

+0

更新,我認爲從屏幕截圖你可以看到一個請求是成功的 – 2015-04-03 21:03:26

回答

0

後嘗試各種方法我終於找到真正的問題,我認爲這可能是所有發現302錯誤的問題。在這個項目(服務器)中,同一個根目錄中有兩個系統,每個系統都有自己的代碼文件。但上面看到我使用

   var controller = 'items'; 
      var base_url = '<?php echo site_url(); ?>'; 
      url : base_url+ '/' + controller+ '/get_unit_item', 

爲URL值我試圖把完整的URL從基礎和它的工作所以現在

 url: '<?php echo base_url(); ?>index.php/en/items/get_unit_item', 

。我認爲對於任何一個重定向問題,首先要檢查的是這個

0

請性能稍微改變你的控制器和模型:

// Model 
public function get_unit_item($where){ 
    $this->db->where('item_id',$where); 
    $result = $this->db->get($this->tablename); 

    if($result->num_rows() > 0) { 
     $j = $result->row(); 
     return $j->unit_item_info ; 
    } 
    else return false; 
} 


// Controller 
public function get_unit_item() 
    { 
    $received = $this->input->post('item_id'); 
    $return = array('status'=>false); 

    if($query = $this->units_model->get_unit_item($received)) { 
     $return['status'] = true; 
     // Add more data to $return array if you want to send to ajax 
    } 


    $this->output->set_content_type("application/json") 
       ->set_output(json_encode($return)); 
} 

檢查在JavaScript中返回的值:

$.ajax({ 
    url : base_url+ '/' + controller+ '/get_unit_item', 
    type:'POST', 
    dataType: 'json', 
    data: {item_id: rs}, 
    success: function(response){ 
      if(response.status === true) { 
       alert('Everything Working Fine!'); 
       console.log(response); 
      } 
      else alert('Something went wrong in query!'); 
    } 
}); 
+0

好吧,我做到了這一點,結果是錯的。實際上,如果我檢查response.status它返回undefined。我認爲該模型甚至沒有被調用,該頁面被立即重定向到登錄頁面 – 2015-04-04 06:22:52

+0

您在HTML中實現'showsome()'的位置? – 2015-04-04 06:26:38

+0

是的,它在一個下拉式變化 – 2015-04-04 06:43:20

相關問題