2017-08-14 114 views
-1

我试图通过使用Ajax来将数据插入我的数据库,但由于某种原因,我的代码没有这样做。以下是我迄今为止:将数据插入数据库中使用AJAX

索引页:

<form id="notify" action="" method="post" accept-charset="utf-8" enctype="multipart/form-data"> 
    <div class="note-wrapper"> 
     <div class="note-title">New Employee</div> 
     <input type="hidden" name="employee_id" value="<?php echo $employee_id; ?>" id="employee_id"> 
     <p>Name</p> 
     <input type="text" name="name" id="name"> 
     <p>Description</p> 
     <textarea name="text" id="text"></textarea> 
     <div class="action-wrapper"> 
      <button class="cancel-btn">Cancel</button><button class="submit-btn flt-rt" type="submit" name="new_note">Add</button> 
     </div> 
    </div> 
</form> 

<script type="text/javascript"> 

$('#notify').submit(function() { 
    var employee_id = $('#employee_id').val(); 
    var name = $('#name').val(); 

    $.ajax({ 
     type: 'POST', 
     data: {employee_id:employee_id, name:name}, 
     url: 'notify', 
     success: function(data) { 
      alert(data); 
     } 
    }); 

}); 

</script> 

当脚本运行,我得到,当它不能找到被请求的页面,其通常显示我的错误页面,但我有通知创建页面,当我手动指向它时,我可以通过浏览器访问它。

通知页:

<?php 
ini_set('display_errors', "Off"); 

$employee_id = $_POST['employee_id']; 
$note_name = $_POST['name']; 

if(!empty($employee_id)) { 
    $objBreeze = new Breeze(); 

    $objBreeze->createEmployee($employee_id, $note_name); 

} 

微风类:

<?php 

class Breeze extends Application { 

    private $table_2 = 'employee'; 

    public $path = 'media/'; 

    // Notes CRUD 
    public function createEmployee(array $params) { 
     if(!empty($params)) { 
      $params['date'] = Helper::setDate(); 
      $this->db->prepareInsert($params); 
      $output = $this->db->insert($this->table_2); 
      $this->id = $this->db->id; 
      return $output; 
     } 
     return false; 
    } 

    public function getEmployee() { 

     $query = "SELECT * FROM {$this->table_2} ORDER BY `date` DESC"; 
     return $this->db->fetchAll($query); 

    } 

上述数据库CRUD工作在我的其他项目完全正常。如果有人知道我做错了什么,我会感激你的帮助朋友。

+3

'createEmployee(array $ params)'需要一个Array作为参数。当你把它叫做'$ objBreeze->在CreateEmployee($ EMPLOYEE_ID,$ note_name);'你是不是传递一个数组!!!!你逝去的2个标量参数 – RiggsFolly

+0

*我可以通过浏览器访问它时,我手动指向它。*分享您手动使用的URL,它工作正常。 –

回答

1

notify脚本不正确调用Breeze::createEmployee。该方法需要一个数组作为参数,并且您传递了2个标量变量

<?php 
ini_set('display_errors', "Off"); 

$employee_id = $_POST['employee_id']; 
$note_name = $_POST['name']; 

if(!empty($employee_id)) { 
    $objBreeze = new Breeze(); 

    //$objBreeze->createEmployee($employee_id, $note_name); 
    //       ^^^^^^^^^^^^^^^^^^^^^^^^ 

    // my guess would be you need somthing like this 
    // I have to guess as you dont show what 
    // $this->db->prepareInsert($params); does 
    $params = array('employee_id' => $_POST['employee_id'], 
        'name' => $_POST['name']); 
    $objBreeze->createEmployee($params); 
} 
+0

感谢朋友,你对标量变量是正确的。 – Blu3

0

的URL是错误的。您要发布帖子:

url: 'notify', 

与实际的URL更换。

+0

我曾尝试添加'notify.php',但它没有区别。 – Blu3

+0

如果OP使用路由机制,这可能是正确的URL – RiggsFolly

+0

什么是Ajax页面的参照正在调用该AJAX页面中的相对URL? –