从数据库发送和检索数据并在选择框中显示而不在CodeIgniter中刷新页面

时间:2016-05-30 19:57:38

标签: php jquery mysql ajax codeigniter

计划

我在CodeIgniter工作;点击添加按钮,弹出一个模态,用户将添加新项目(项目ID,项目描述,费率和UoM),然后按提交按钮。

我使用AJAX将数据发送到数据库而不刷新页面并且它正常工作。

问题

现在我想从数据库中检索数据并分别附加在item-ID和ITEM Desc的SELECT BOX中。我已经在CodeIgniter中编写了MODEL和CONTROLLER的代码,现在需要AJAX代码在我预先填充的选择框的末尾附加我获取的数据(在第一次加载页面时,选择框通过动态填充php)。

我希望所有的工作都没有刷新页面。

任何形式的帮助或建议?

CODEIGNITER中的模型代码

<?php
  class PostModel extends CI_Model {

  function getLastRecord(){
  $query = "select * from sale order by itemid DESC limit 1";
  $res = $this->db->query($query);

  if($res->num_rows() > 0) {
    return $res->result();
  }
  return result();
  }
  }
  ?>

控制器代码

public function index()
{
    $data['last'] = $this->PostModel->getLastRecord();
    $this->load->view('header');
    $this->load->view('salevocher', $data);
    $this->load->view('footer');
}

1 个答案:

答案 0 :(得分:2)

您的ajax应在成功回复后填充您的选择框:

$.ajax({
    url: ...,
    success: function(data) {
        loadMySelectbox();
    }
});

function loadMySelectbox() {
    $.ajax({
        url: 'controller/getSelectboxData',
        success: function(data) {
            $.each(data, function(key, value) {
                $('#mySelectbox').append($('<option>').text(value.item_desc).attr('value', value.item_id));
            });
        }
    });
}

<强> PHP

//model
function getLastRecord(){
    //select only data you really need
    $query = "select itemid, itemdesc from sale order by itemid DESC limit 1";

//controller
public function getSelectboxData() {
    $data = $this->PostModel->getLastRecord();
    $this->output->set_content_type('application/json')
         ->set_output(json_encode($data));
}