如何在CodeIgniter中使用AJAX检索多个对象?

时间:2013-09-08 13:49:12

标签: php jquery ajax codeigniter

我正在我的网站上准备一个'admin'笔记表。基本上,我想做两件事:

  1. 使用AJAX在DB中的'notes'表中插入新笔记。
  2. 如果插入成功,请使用AJAX更新页面上显示的备注表。
  3. -

    $('#form_add_btn').click(function(){
    
        var form_data = {
            note: $('#note_text').val(),
            type: $('#form_type_select').val(),
        }
    
        $.ajax({
            url: "<?php echo base_url();?>admin/add_note",
            type: 'POST',
            data: form_data,
            success: function(msg)
            {
                $('#note_msg').html(msg); 
            }
        });
    
    return false;
    });
    

    目前控制器方法add_note()通过模型添加注释并返回true或false,将其加载到视图中并返回。

    public function add_note() {
        $note = $this->input->post('note');
        $type = $this->input->post('type');
    
        $data['is_success'] = $this->model_admin->add_note($note, $type);
        $this->load->view('admin/add_note', $data);
    }
    

    如果$ data ['is_success']为真,我想再做一次AJAX请求:

    $.ajax({
            url: "<?php echo base_url();?>admin/get_notes_table",
            type: 'POST',
            success: function(table) 
            {
                $('#wrap').html(table);
            }
    });
    

    我怎样才能完成这个?我尝试在第一个请求内部和之后放置第二个请求,但我仍然需要知道插入是否成功。

    我刚刚开始在jQuery中学习CI和AJAX,非常感谢你的帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

你只能在一个ajax调用中执行此操作,只需更改add_note控制器函数, 而不是在视图中返回true / false,它应该返回 json 。 这个json将包含成功或错误以及新的备注列表。您可以在成功函数中解析此json以显示注释。

    public function add_note() {
        $note = $this->input->post('note');
        $type = $this->input->post('type');

        $data['is_success'] = $this->model_admin->add_note($note, $type);
        if($data['is_success']){
          //get the new notes from the db including the new one
          $data['result']     = "success";
          $data['motes'] = notes from DB
        }else{
          $data['result'] = "fail";
        }

        echo json_encode($data);exit;

} 

它的好处是,你的一个ajax呼叫被保存,意味着用户exp会更好,因为他不必等待更多。