首页 > 解决方案 > 创建功能不起作用。数据表和 Ajax

问题描述

我的创建功能不起作用。但是,更新和删除是完美的工作。每当我创建/添加用户时,即使我插入了有效的姓名和电子邮件,它总是会触发错误“需要姓名”。我是这个ajax的新手,希望有人能提供帮助。我在下面提供了我的代码和屏幕截图。太感谢了。

每当我创建用户时,这是我的错误

每当我添加用户时,这是我的错误

意见:

 <button class="btn btn-success" onclick="add_person()"><i class="glyphicon glyphicon-plus"></i> Add Person</button>
        <button class="btn btn-default" onclick="reload_table()"><i class="glyphicon glyphicon-refresh"></i> Reload</button>
        <button class="btn btn-danger" onclick="bulk_delete()"><i class="glyphicon glyphicon-trash"></i> Bulk Delete</button>
        <br />
        <br />
        <table id="table" class="table table-striped table-bordered" cellspacing="0" width="100%">
            <thead>
                <tr>
                    <th><input type="checkbox" id="check-all"></th>
                    <th>Name</th>
                    <th>Email</th>  
                    <th style="width:150px;">Action</th>
                </tr>
            </thead>
            <tbody>
            </tbody>
 
            <tfoot>
            <tr>
                <th></th>
                <th>Name</th>
                <th>Email</th>
                <th>Action</th>
            </tr>
            </tfoot>
        </table>
    </div>

<!-- Bootstrap modal -->
<div class="modal fade" id="modal_form" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h3 class="modal-title">Person Form</h3>
            </div>
            <div class="modal-body form">
                <form action="#" id="form" class="form-horizontal">
                    <input type="hidden" value="" name="id"/> 
                    <div class="form-body">
                        <div class="form-group">
                            <label class="control-label col-md-3">Name</label>
                            <div class="col-md-9">
                                <input name="name" id="name" placeholder="Name" class="form-control" type="text">
                                <span class="help-block"></span>
                            </div>
                        </div>
                        <div class="form-group">
                            <label class="control-label col-md-3">Email</label>
                            <div class="col-md-9">
                                <input name="email" id="email" placeholder="Email" class="form-control" type="text">
                                <span class="help-block"></span>
                            </div>
                        </div>
                       
                        
                     
                    </div>
              
            </div>
            <div class="modal-footer">
                <button type="button" id="btnSave" onclick="save()" class="btn btn-primary">Save</button>
                <button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button>
            </div>
 
    </form>
 
 
         </div>
      </div>
     
    </div>
    <!-- End Bootstrap modal -->

阿贾克斯:

function save()
{
    $('#btnSave').text('saving...'); //change button text
    $('#btnSave').attr('disabled',true); //set button disable 
    var url;
 
    if(save_method == 'add') {
        url = "<?php echo site_url('profile/ajax_add')?>";
      
       
    } else {
        url = "<?php echo site_url('profile/ajax_update')?>";
    }
 
    // ajax adding data to database
    var formData = new FormData($('#form')[0]);
    $.ajax({
        url : url,
        type: "POST",
        data: formData,
        contentType: false,
        processData: false,
        dataType: "JSON",
        success: function(data)
        {
 
            if(data.status) //if success close modal and reload ajax table
            {
                $('#modal_form').modal('hide');
                reload_table();
            }
            else
            {
                for (var i = 0; i < data.inputerror.length; i++) 
                {
                    $('[name="'+data.inputerror[i]+'"]').parent().parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class
                    $('[name="'+data.inputerror[i]+'"]').next().text(data.error_string[i]); //select span help-block class set text error string
                }
            }
            $('#btnSave').text('save'); //change button text
            $('#btnSave').attr('disabled',false); //set button enable 
 
 
        },
        error: function (jqXHR, textStatus, errorThrown)
        {
            alert('Error adding / update data');
            $('#btnSave').text('save'); //change button text
            $('#btnSave').attr('disabled',false); //set button enable 
 
        }
    });
}

控制器:

 public function ajax_add()
    {
        $this->_validate();
        
        $data = array(
            'name' => $this->input->post('name'),
            'email' => $this->input->post('email'),
      
        );
        
        $insert = $this->profiles->save($data);
        
        echo json_encode(array("status" => TRUE));
    }




//validation
    private function _validate()
        {
            $data = array();
            $data['error_string'] = array();
            $data['inputerror'] = array();
            $data['status'] = TRUE;
            
            if($this->input->post('name') == '')
            {
                $data['inputerror'][] = 'name';
                $data['error_string'][] = 'Name is required';
                $data['status'] = FALSE;
            }
            
            if($this->input->post('email') == '')
            {
                $data['inputerror'][] = 'email';
                $data['error_string'][] = 'Email is required';
                $data['status'] = FALSE;
            }
            
    
            
            if($data['status'] === FALSE)
            {
                echo json_encode($data);
                exit();
            }
        }

模型:

public function save($data)
    {
        $this->db->insert($this->table, $data);
        return $this->db->insert_id();
    }

标签: ajaxcodeigniterdatatable

解决方案


推荐阅读