2011-04-13 81 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

相关问题