使用codeigniter进行jquery自动完成 - 将控制器名称传递给javascript

时间:2013-03-13 11:49:43

标签: javascript jquery codeigniter

我有一个codeigniter自动完成工作正常。 javascript语法是:

控制器

  function autocomplete(){
    $this->load->view('sales/new_order_details');
  }

模型

function get_customer($q){
    $this->db->select('CustomerName');
    $this->db->like('CustomerName', $q);
    $query = $this->db->get('Customers');
    if($query->num_rows > 0){
      foreach ($query->result_array() as $row){
        $row_set[] = htmlentities(stripslashes($row['CustomerName'])); //build an array
      }
      $this->output->set_content_type('application/json')->set_output(json_encode($row_set));

    }
  }

的javascript

$(function(){
  $("#customer").autocomplete({
    source: "get_customers"
  });
});

MVC框架的概念是可重用性。如何将请求控制器的名称传递给javascript,以便可以通过多种控制器方法动态使用它?

类似于:

var method=controllername.requestingmethod;
$(function(){
  $("#customer").autocomplete({
    source: "method"
  });
});

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在您的控制器中,您可以将其作为变量传递

控制器:

function autocomplete(){
    $data['methodName'] = "autocomplete";
    $this->load->view('sales/new_order_details',$data);
}

现在您可以在以下视图中访问它:

$(function(){
    $("#customer").autocomplete({
        source: "<?=$methodName?>"
    });
});

答案 1 :(得分:0)

如果您在php扩展文件中编写了jquery或javascript代码,可以这样做

$(function(){
    $("#customer").autocomplete({
        source: "<?php echo site_url('controllername/methodname');?>"
    });
});