2017-03-11 17 views
0

JQuery .ajaxメソッドを使用してフォームからデータを挿入しようとしています。開発者ツールでは、リクエストがprocess.phpファイルに送信されていることがわかりますが、データをデータベースに追加することはできません。Jquery .ajax()を使用してデータベースにデータを挿入するとPHPが動作しない

Javascriptを

$(document).ready(function() { 
    console.log("ready!"); 
    $("#submit").submit(function(e) { 

     var url = "process.php"; // the script where you handle the form input. 

     $.ajax({ 
       type: "POST", 
       url: "process.php", 
       data: $("#submit").serialize(), // serializes the form's elements. 
       success: function(data){ 
        alert("Data is send successifully!"); // show response from the php script. 
       } 
      }); 

     e.preventDefault(); // avoid to execute the actual submit of the form. 
    }); 
}); 

今、私は私のカスタムクラスとメソッドを使用します。

これは今私がadd()方法

public function add($fName, $lName, $nickname){ 
    $db = new db(); 
    $db->insert($fName, $lName, $nickname); 
    } 

最後にprocess.phpファイルでuser.class.phpを持っている私のdb.class.phpからinsert()方法

public function insert($fName, $lName, $nickname){ 
    $query = "INSERT INTO users (first_name, last_name, nickname) 
       VALUES ($fName, $lName, $nickname)"; 

    return $this->_conn->query($query); 
    } 

です。私はそこに私の要求を送る。

<?php 
require_once 'classes/user.php'; 
require_once 'classes/db.php'; 

$user = new user(); 
$user->add($_POST['fName'], $_POST['lName'], $_POST['nickname']); 

?> 
+0

ユーザーが成功する必要がある場合は、echo "success"のようなものを返す必要があります。サーバー側からはAjaxレスポンスしか得られません。 – JYoThI

+0

これは何か? '($ db-> insert($ fName、$ lName、$ nickname)){ echo"成功の追加 "; } else { echo "追加に失敗しました"; } ' 私はそれがどのように役立つのか分かりません。 –

答えて

0

あなたの値はSQL-Queryの文字列として解釈される必要があります。そうでないと、MySQLはこれらの列を空であるとみなします。

SQLインジェクション攻撃を避けるには、一般的にプリペアドステートメントを使用することをお勧めします。

+0

ありがとうございます:) –

0

$ _POSTにあるものをデバッグし、クエリを挿入するために必要なvars parseが空でないことを確認してください。 javaスクリプトのsuccess文でprocess.phpとconsole.log(data)のvar_dump($ _ POST)を試してください。

+0

非常にusifullヒント、ありがとうございます。 –

関連する問題