2011-04-13 79 views
1

這是我第一次將ajax與搜索輸入框結合使用。我的AJAX工作正常,但我不知道如何從模型和控制器正確返回搜索數據。Codeigniter - 來自控制器/模型問題的Ajax返回數據

的控制器: 「你已經找到twiiter ID的」 工作正常,但是$ NUM不會通過

function search() 
{   
    $this->form_validation->set_rules('twit', 'Search', 'required|trim|min_length[2]|max_length[25]');//check 
    if ($this->form_validation->run() == TRUE) { 
    $this->load->model('twit_model'); 
    $query = $this->twit_model->entity(); 
    if(!$query = $this->twit_model->entity()) 
    { 
    echo "The name does not exist"; 
     }else{  
     echo "<h3>You found $num Twitter ID's</h3>"; //this shows up in the view   
     echo "<li class=\"list1\">$twit_id - $name</li> "; //the "-" shows up in the view   
     }    
    } 

}

模型來。

function entity() 
{ 
    $twit = $this->input->post('twit'); 
    $this->db->select('id, name, state, party, twit_id, job'); 
    $this->db->like('name', $twit); 
    $this->db->or_like('state', $twit); 
    $this->db->or_like('party', $twit); 
    $this->db->or_like('twit_id', $twit); 
    $this->db->or_like('job', $twit); 
    $query = $this->db->get('twit'); 
    $num = $query->num_rows(); 
    if($query->num_rows() > 0) { 
     $data - array(
     $query, 
     $num 
     ); 
     return $data; 
    } 
    } 

的控制器和模型做工精細的基礎知識,我知道在這兩個我沒有從模型傳遞數據給控制器正確

jQuery的結束

$(function() { 
$('#display').hide(); 
$('#name_error').hide(); 
    $('#submit').click(function() { // could be #form .submit 

     var twit = $("#twitter_search").val(); 
     if (twit == "") { 
      $("label#name_error").show(); 
      $("input#twitter_search").focus(); 
      return false; 
     } 
var datastring = $('#form').serialize();   
$.ajax({ 
    url: "<?php echo site_url('twitter/search'); ?>", 
    type: "POST", 
    data: datastring, 
    success: function(msg) { 
     $('#display').html(msg).show(3000);    
     } 
    }); 
    return false;  

}); 

});

jquery工作的很好,警報/螢火蟲告訴我,我正在將數據傳遞給控制器​​。我只是不知道如何寫可變數據的傳遞到模型 - >控制器 - >查看

感謝您閱讀

回答

2

它看起來好像你正在使用超出範圍的變量。這樣

$data - array(
    $query, 
    $num 
    ); 

的東西:

在模型中

,你應該改變這種

$data = array('query' => $query, 'count' => $num, 'twit_id'=>$twit); 
在控制器改變

那麼這樣的:

echo "<h3>You found $num Twitter ID's</h3>";   
echo "<li class=\"list1\">$twit_id - $name</li> "; 

弄成這個樣子:

echo "<h3>You found ".$query['count']." Twitter ID's</h3>"; 
echo "<li class=\"list1\">".$query['twit_id']." - ".$query['query']."</li> "; 
+0

謝謝icchanobot,這非常有幫助。我很感激 – Brad 2011-04-14 02:47:53

1
$data - array(
    $query, 
    $num 
    ); 

你做一個錯字嗎?應該是$ data = array? 此外,搜索函數中的變量$ num既不被定義也不被返回。

+0

是的,這是我的一個錯字。 $ num是$ num = $ query-> num_rows();在模型中。但仍然有相同的問題轉換$查詢和$ num變量 – Brad 2011-04-13 16:45:09

+0

是啊,$ num只在模型中,但它沒有返回到搜索功能。所以你不能直接在搜索功能中使用$ num。 – yangqi 2011-04-13 16:52:15

+0

我可以通過控制器將數據傳遞給視圖,但我從未將「數據」轉換爲控制器中的變量。這是如何完成的? – Brad 2011-04-13 17:47:00

相關問題