在CodeIgniter中通过ajax插入数据库错误


Database error on insert through ajax in CodeIgniter

这是一个奇怪的错误。我可以通过Ajax添加记录,但是控制台显示这种类型的错误:

Error Number: 1048
Column 'name' cannot be null
INSERT INTO `feedback` (`name`, `email`, `message`, `timecreated`) VALUES (NULL, NULL, NULL, 1407084933)
Filename: /var/www/html/storyline/models/feedback_model.php
Line Number: 10

结构如下:

$(document).ready(function() {
  $('#feedbacksubmit_button').click(function(){
        var name = $('#feedbackname').val();
        var email = $('#feedbackemail').val();
        var message = $('#feedbackmessage').val();
        if(message == ''){
            $('#feedbackmessage').next().show();
            return false;
        }
        var formvalues = {
            feedbackname  : name,
            feedbackemail  : email,
            feedbackmessage  : message,
        };
        $.ajax({
            type: "POST",
            url:  "<?php echo base_url();?>feedback/add",
            data: { values: formvalues },
            success: function(response) {
                alert("Thanks for your Feedback!");
            },
            error: function(error) {
                alert(error);
            }
        });
    });
});

feedback.php控制器:

<?php
class Feedback extends CI_Controller {
    public function __construct() {
        parent::__construct();
        $this->load->model('feedback_model');
    }
    public function add() {
        $values = $this->input->post('values');
        $timecreated = time();
        $name = $values['feedbackname'];
        //echo $name;
        $data = array(
           'name' => $name,
           'email' => $values['feedbackemail'],
           'message' => $values['feedbackmessage'],
           'timecreated' => $timecreated,
        );
        $data['status'] = $this->feedback_model->new_feedback($data);
    }
}

feedback_model.php:

class Feedback_model extends CI_Model {
    public function __construct() {
        $this->load->database();
    }
    public function new_feedback($values) {  
      $this->db->insert('feedback', $values);
    }
}

HTML表单代码:

<form method="post">
    <div class="form-group">
        <div class="input-group">
            <span class="input-group-addon">Name</span>
            <input class="form-control" placeholder="Your name" name="feedbackname" id="feedbackname" type="text" />
        </div>
    </div>
    <div class="form-group">
        <div class="input-group">
            <span class="input-group-addon">@</span>
            <input class="form-control" placeholder="Your email address" name="feedbackemail" id="feedbackemail" type="text" />
        </div>
    </div>
    <div class="form-group">
        <label class="control-label" for="feedbackmessage">Message</label>
        <div class="input-group">
            <textarea class="form-control" name="feedbackmessage" id="feedbackmessage" rows="8" cols="52" placeholder="The message you want to send to us."></textarea>
            <span class="form_error">Please enter your message</span>
        </div>
    </div>
    <button type="submit" class="btn btn-primary" id="feedbacksubmit_button">Submit</button>
</form>

这些值被正确地插入到数据库中,但我仍然在控制台中得到那个特定的错误,说提交的值是NULL

编辑:

通过在调试器中插入断点,我得到成功的警告框,而如果调试器没有打开,我得到错误的警告框。

在这两种情况下,值都被插入到数据库中。

表结构:

+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| id          | int(11)     | NO   | PRI | NULL    | auto_increment |
| name        | varchar(50) | YES  |     | NULL    |                |
| email       | varchar(50) | YES  |     | NULL    |                |
| message     | text        | YES  |     | NULL    |                |
| timecreated | int(11)     | NO   |     | NULL    |                |
+-------------+-------------+------+-----+---------+----------------+

首先尝试直接从表单中添加"add"函数。如果它可以工作,检查ajax中的代码。通过这种方式,您可以检查错误是否在php或ajax中。