从控制器发送数据以查看codeigniter

时间:2013-03-12 07:39:23

标签: codeigniter controller views

我有控制器加载客户详细信息视图,其中包括客户名称,电子邮件,传真,电话号码。 ...等我希望系统的用户在客户名称形式的类型时检查该客户是否存在于数据库中,并立即以电子邮件,传真等形式显示他的联系方式 这是否可行而无需再次加载视图?

2 个答案:

答案 0 :(得分:0)

1.您可以通过在加载视图时拥有一组客户来实现此目的,当用户键入名称时,您可以使用您拥有的数组检查此值。需要注意的是,你必须从控制器中获取php数组的js数组。

2.使用ajax。简单而有活力。

答案 1 :(得分:0)

希望这会对你有所帮助。

控制器:[我只编写功能。]

public function customer_details() {
       $data['base_url'] = base_url();
       $data['somedata'] = 'somevalue';
       $this->load->view('customerDetailsView',$data);
}
public function ajax_fetchDetails() {
       $customerName = $this->input->post('cname');
       $this->load->model('customerDetails');
       $cdetails = $this->customerDetails->fetchdetails($customerName);
       if(!empty($cdetails)) {
          echo json_encode($cdetails);
       }
       else echo '0'; //Handle it in view.
}

<小时/> 型号:[编写您自己的查询]

Select * from `customerdetails` where `name` like $customerName limit = 1;

<小时/> 查看:customerDetailsView [我只写了应该出现在标签中的内容]

<label for='cname'>Customer Name:</label> <input type="text" id="cname" />
<br/>
<input type="button" id="fetchbtn" value="Fetch Details" />
<br/>
<label for='email'>Email: </label> <input type="text" id="email" />
<label for='fax'>Fax: </label> <input type="text" id="fax" />

......所以直到所有细节都已包含在内。

<!--For the following script to work you'll have to use jquery library.-->
  <script type="text/javascript">
    $("#fetchbtn").onclick( function(event) {
        var name = jQuery.trim($("#cname").val()); //Fetch the customer name enter in the input field.
        if(name != '') // Check for empty condition
        {
            $.ajax({
            type: "POST", url:"<?php echo $base_url.'<CONTROLLER NAME>/ajax_fetchDetails'; ?>",
            data:{cname:name},
                success: function(result) {
                    if(result != '0') {
                        var customerDetails = JSON && JSON.parse(result) || $.parseJSON(result); // Parse the JSON encoded customer details into string.
                        var email = customerDetails.email, fax = customerDetails.fax; //... So on
                        $("#email").val(email); $("#fax").val(fax); //... So on
                    }
                }
            });
        }
    });
  </script>

这里唯一的缺点是,如果两个客户同名,则只会获取第一个客户的详细信息。为避免这种情况,您必须为每个客户维护唯一的用户名。