【问题标题】:Null being inserted into database with ajax使用ajax将Null插入数据库
【发布时间】:2017-02-06 18:59:41
【问题描述】:

PHP 新手。我的 ajax 是成功的,但我无法弄清楚为什么我的 MySQL 数据库的每一列中都发布了 NULL。我的数据库有 4 列(name、cap、assigned_seating、open_seating)。这是一个简单的形式

//Model
class My_model extends CI_Model 
{
    function __construct()
    {
        parent::__construct();
    }    
    public function insert_data()
    {
        $data['name'] = $_POST['tableName'];
        $data['cap'] = $_POST['tableCap'];
        $data['assigned_seating'] = $_POST['assigned_seating'];
        $data['open_seating'] = $_POST['open_seating'];

        $this->db->insert('tables', $data);
    }  
}

//Controller
class Tables extends CI_Controller 
{
  function __construct()
  {
    parent::__construct();
    $this->load->model('My_model');
  }
  public function add()
  {
    $this->load->model('My_model');
    $this->My_model->insert_data();
  }
}

//Ajax
  $(".createTableButton").click(function(e) {
    e.preventDefault();
    var dataToSend = $('#myForm').serialize();
    $.ajax({
      url: "http://localhost/tableseating/tables/add",
      data: dataToSend,
      dataType: 'jsonp',
      method: 'POST',
      success: function()
      {
        console.log("Success");
      },
      error: function()
      {
        console.log("Error");
      }
    });

//HTML
  <form method="post" id="createTableForm" action="">

Table Name<input type="text" id="tableName" name="tableName" /><br>
Seat Cap<br><select type="select" id="tableCap" name="tableCap">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
  <option value="6">6</option>
  <option value="7">7</option>
  <option value="8">8</option>
  <option value="9">9</option>
  <option value="10">10</option>
  <option value="11">11</option>
  <option value="12">12</option>
  <option value="13">13</option>
  </select><br>

Table Type<br>
<input type="radio" id="openSeating" name="open_seating" checked="checked" required /> Open Seating<br>   
<input type="radio" id="assignedSeating" name="assigned_seating" required /> Assigned Seating<br><br>
<input type='submit' class='createTableButton btn btn-primary' value="Create"/>
        </form>  

【问题讨论】:

    标签: php jquery mysql ajax codeigniter


    【解决方案1】:

    你必须使用 dataType: 'json' (https://stackoverflow.com/a/4508215/7416478),试试这个:

    class Tables extends CI_Controller 
    {
      function __construct()
      {
        parent::__construct();
        $this->load->model('My_model');
      }
      public function add()
      {
    $data = array(
          'name' => $this->input->post('tableName') ,
          'cap' => $this->input->post('tableCap') ,
          'assigned_seating' => $this->input->post('assigned_seating') ,
          'open_seating' => $this->input->post('open_seating') 
       );
    
    
       $this->My_model->insert($data);
    
      }
    }
    

    //模型

    class My_model extends CI_Model 
    {
        function __construct()
        {
            parent::__construct();
        }    
        public function insert_data($data)
        {
          $this->db->insert('tables', $data);
        }  
    }
    

    【讨论】:

    • 编辑我的答案,你不能使用 jsonp 邮寄参数。
    猜你喜欢
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2017-08-12
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    相关资源
    最近更新 更多