2016-05-13 5 views
4

Я новичок в jquery и ajax, и теперь мне трудно найти решение этой проблемы при вводе данных в базу данных с помощью ajax и codeigniter. Все ошибки в порядке, но когда в форме нет ошибки, я получаю ошибку базы данных, и все входы становятся NULL.Невозможно вставить данные в базу данных с помощью ajax

Контроллер

public function add() { 

$this->load->model('user_model'); 
    $data => array (
     'first_name'  => $this->input->post['first_name'], 
     'last_name'  => $this->input->post['last_name'], 
     'active'   => $this->input->post['active'], 
     'date_registered' => date('Y/m/d h:i:sa') 
); 

    // assume validation rules are already set. 
    if ($this->form_validation->run() == FALSE) { 
    $result['message'] = validation_errors(); 
    } else { 
    $result['data'] = $this->user_model->save($data); 
    } 
} 

Ajax 1:

$(document).ready(function() { 
    $('#create-user').click(function(e) { 
    var is_valid = false; 
    var form_id = '#'+ $(this).parents('form').attr('id'); 
    // Validate required fields are not blank 
    // do a js validation? 

    // Apply action 
    if(is_valid) { 
     var add_result = do_submit(form_id); 
    } else { 
     $('#error-msg').html(result.message); // if form is not valid 
    } 
    }); 
}); 

Аякс 2:

function do_submit(form_id) { 
    var url   = $(form_id).attr("action"); 
    var ajax_result = false; 
    var formData = {}; 

    // Submit form using ajax 
    ajax_result = $.ajax({ 
    type: "POST", 
    url: url, 
    data: $(form_id).serialize(), 
    dataType: 'json', 
    success: function(result) { 
     // return result; 
     // do something 
     console.log(result); 
     if (result.data) { 
     make_alert(); 
     } 
    }, 
    error: function(textStatus) { 
     /* Note: decide how all errors should be shown. */ 
     swal({ 
     title: "Error!", 
     text: "Oops, something went wrong. Check fields and try again.", 
     type: "error" 
     }); 
    } 
    }); 

    return ajax_result; 
} // End do_submit() 
+1

изменения '-> post ['first_name']' to '-> pos t ('first_name') ' – Saty

+0

@Saty, Holy Cow! Я забыл изменить это. Теперь он работает отлично, Большое спасибо. – claudios

+0

Хорошо еще спасибо – claudios

ответ

3

Чтобы получить почтовые данные в CodeIgniter мы используем

$this->input->post('field_name'); 

SO вам необходимо изменить все post['field_name'] к post('field_name')

Ваш окончательный код будет

$this->load->model('user_model'); 
     $data => array (
      'first_name'  => $this->input->post('first_name'), 
      'last_name'  => $this->input->post('last_name'), 
      'active'   => $this->input->post('active'), 
      'date_registered' => date('Y/m/d h:i:sa') 
    ); 

Read https://www.codeigniter.com/user_guide/libraries/input.html

4

Я думаю, что у вас есть синтаксические ошибки здесь

$this->load->model('user_model'); 
'data' => array (
    'first_name'  => $this->input->post['first_name'], 
    'last_name'  => $this->input->post['last_name'], 
    'active'   => $this->input->post['active'], 
    'date_registered' => date('Y/m/d h:i:sa') 
); 

Если вероятно

$this->load->model('user_model'); 
$data => array (
    'first_name'  => $this->input->post('first_name'), 
    'last_name'  => $this->input->post('last_name'), 
    'active'   => $this->input->post('active'), 
    'date_registered' => date('Y/m/d h:i:sa') 
); 

Ваш массив параметров, кажется, ключ, но какой переменной? Таким образом, вы должны иметь $data вместо 'data'.

+1

Я думаю, что вы указали $ data также правильно! – Saty

+1

такой же ответ из комментария. и переменные данные - только опечатка, извините за это. – claudios

Смежные вопросы