[英]Execute query & display results using AJAX in CodeIgniter
我需要一些帮助,以使AJAX在CodeIgniter项目中工作。 基于用户的选择,我想使用AJAX将变量(Agency_Number)发送到控制器,以执行并在视图内返回查询结果。
例:
我能够成功执行查询并获得要在表单中填充的程序主机名,但是,当返回信息时,我的选择输入将从页面中消失。 我想这是由重新加载视图引起的,我认为我本来不应该这样做。 我不确定如何不将Program_Host_Name值传递回我的视图。
谢谢大家的帮助!
这是我的观点(create_opportunity.php)
<form submit="opportunity/create_opportunity" id="validation-form" method="POST">
<select id="Agency_Number">
<option value=""></option>
<?php foreach ($agencies as $agency):?>
<option value="<?php echo $agency->Agency_Number;?>"><?php echo $agency->Agency_Number;?></option>
<?php endforeach;?>
</select>
<input type="text" id="Program_Host_Name" value="<?php echo $Program_Host_Name ?>"/>
</form>
这是视图中的脚本:
<script type="text/javascript">
$('#Lookup').click(function() {
var AgencyNumber = $('#Agency_Number').val();
if (!AgencyNumber || AgencyNumber == 'Agency_Number') {
alert('Please enter an Agency Number');
return false;
}
var form_data = {
Agency_Number: $('#Agency_Number').val(),
ajax: '1'
};
$.ajax({
url: "<?php echo site_url('opportunity/create_opportunity'); ?>",
type: 'POST',
data: form_data,
success: function(msg) {
$('body').html(msg);
}
});
return false;
});
</script>
这是我的控制器(opportunity.php)
function create_opportunity() {
$this->data['agencies'] = $this->ion_auth_model->get_agencies();
if($this->input->post('ajax')) {
$Agency_Number = $this->input->post('Agency_Number');
$agency = $this->ion_auth_model->get_agency($Agency_Number)->row();
$this->data['Program_Host_Name'] = $agency->Name;
$this->data['Address_1'] = $agency->Address_1;
}
$this->data['main_content'] = 'create_opportunity';
$this->load->view('./_blocks/template', $this->data);
}
我必须使用json_encode()将关联数组从PHP转换为JSON,然后使用$ .getJSON()返回JavaScript数组。
这是我的工作脚本:
<script type="text/javascript">
$('#Lookup').click(function() {
var AgencyNumber = $('#Agency_Number').val();
if (!AgencyNumber || AgencyNumber == 'Agency_Number') {
alert('Please enter an Agency Number');
return false;
}
var form_data = {
Agency_Number: $('#Agency_Number').val(),
ajax: '1'
};
$.ajax({
url: "<?php echo site_url('opportunity/get_agency'); ?>",
type: 'POST',
data: form_data,
dataType: 'json',
cache: false,
success: function(data) {
$('#Program_Host_Name').val(data.Program_Host_Name);
$('#Address_Line_1').val(data.Address_1);
},
error: function(thrownError) {
alert(thrownError);
}
});
return false;
});
</script>
这是我的工作控制器:
function get_agency() {
if($this->input->post('ajax')) {
$Agency_Number = $this->input->post('Agency_Number');
$agency = $this->ion_auth_model->get_agency($Agency_Number)->row();
echo json_encode(
array( "Program_Host_Name" => "$agency->Name",
"Address_1" => "$agency->Address_1"
)
);
}
}
谢谢您的帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.