2017-08-14 23 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)'は、配列としてパラメータを期待しています。あなたが '$ 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は何ですか? –

関連する問題