2013-03-12 3 views
0

У меня есть контроллер, который загружает представление деталей клиента, которое включает имя клиента, адрес электронной почты, факс, номер телефона. ... и т. д. я хочу, чтобы пользователь системы, когда типы в форме имени клиента проверяли, существует ли этот клиент в базе данных и мгновенно отображать его контактные данные в формах электронной почты, факса и т. д. это можно сделать без необходимости повторного загрузки представления?отправка данных с контроллера для просмотра codeigniter

+0

Вы ищете [jQuery autocomplete] (http://jqueryui.com/autocomplete/#custom-data)? Вы можете увидеть информацию о клиенте во время поиска их имен. Вот как это сделать в CI. [tutorial] (http://www.jamipietila.fi/codeigniter-and-autocomplete-with-jquery/) –

ответ

0

1.Вы можете сделать это, имея массив клиентов при загрузке представления, когда пользователь вводит имя, вы можете проверить это значение с помощью массива, который у вас есть. Следует отметить, что вам нужно создать массив js массива php, который вы получите от контроллера.

2.Use ajax. Простой и динамичный.

+0

Вы имеете в виду использование ajax для отправки массива данных из контроллера в представление? можете ли вы мне помочь, как это сделать? – user1109842

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> 

Единственным недостатком является то, если два клиента имеют такое же имя только детали 1-го клиента будет неправдоподобным. Чтобы этого избежать, вам нужно будет поддерживать уникальное имя пользователя для каждого клиента.

Смежные вопросы