我有控制器加载客户详细信息视图,其中包括客户姓名、电子邮件、传真、电话号码。...等我希望系统用户在输入客户姓名的形式时检查该客户是否存在于数据库中,并立即以电子邮件、传真等形式显示他的联系方式是这样的无需再次加载视图是否可行?
问问题
192 次
2 回答
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>
这里唯一的缺点是,如果两个客户的名字相同,则只会获取第一个客户的详细信息。为避免这种情况,您必须为每个客户维护唯一的用户名。
于 2013-03-12T08:39:44.707 回答
0
1.您可以通过在加载视图时拥有一组客户来做到这一点,当用户键入名称时,您可以使用您拥有的数组检查此值。需要注意的是,您必须制作从控制器获得的 php 数组的 js 数组。
2.使用ajax。简单而动态。
于 2013-03-12T07:43:59.337 回答