繁体   English   中英

使用CodeIgniter中的AJAX执行查询并显示结果

[英]Execute query & display results using AJAX in CodeIgniter

我需要一些帮助,以使AJAX在CodeIgniter项目中工作。 基于用户的选择,我想使用AJAX将变量(Agency_Number)发送到控制器,以执行并在视图内返回查询结果。

例:

  1. 用户从下拉列表中选择代理商编号
  2. 使用AJAX发送到控制器的代理商编号
  3. 发送给模型的代理商编号,以执行查询以从数据库中选择该代理商的信息。
  4. 表单输入(例如Program_Host_Name)将填充有代理商信息。

我能够成功执行查询并获得要在表单中填充的程序主机名,但是,当返回信息时,我的选择输入将从页面中消失。 我想这是由重新加载视图引起的,我认为我本来不应该这样做。 我不确定如何不将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM