-2

ディレクトリに 2 つのファイルがあります。1 つはjs/form-validation-reg.jsで、もう 1 つはHTML/registeruser.phpです。JavaScript ファイルは、既にチェック済みの別の html ファイルからフォームを検証します。すべての値は ajax までずっと渡されますが、値がregisteruser.phpデータベースに送信されるようには見えません。

form-validation-reg.js:
//data string creation
var dataString = 'name='+ name
                    + '&pass=' + pass     
                    + '&nationality=' + nationality
                    + '&contactno=' + contactno
                    + '&dateofbirth=' + dateofbirth
                    + '&eaddress=' + eaddress
                    + '&address=' + address
                    + '&gender=' + gender
                    + '&monthlysub=' + monthlysub;      
        //ajax
        $.ajax({
        type:"POST",
        url: "HTML/registeruser.php",
        data: dataString,
        success: success(),
           error:function(jqXHR, textStatus, errorThrown){
                               alert("Error type" + textStatus + "occured, with value " + errorThrown);
                           }

    });
});  

エラーは表示されず、URLを「../HTML/registeruser.php」に設定しようとしましたが、それでも機能しません。PHPファイル(注:データベースの詳細が正しいことも確認しました。):

$name = stripslashes(strip_tags($_POST['name']));
$pass = stripslashes(strip_tags($_POST['pass']));
$nationality = stripslashes(strip_tags($_POST['nationality']));
$contactno = stripslashes(strip_tags($_POST['contactno']));
$dateofbirth = stripslashes(strip_tags($_POST['dateofbirth']));
$eaddress = stripslashes(strip_tags($_POST['eaddress']));
$address = stripslashes(strip_tags($_POST['address']));
$gender = stripslashes(strip_tags($_POST['gender']));
$monthlysub = stripslashes(strip_tags($_POST['monthlysub']));


$mysqli = new mysqli("localhost", "root", "","testdb")or exit("Error connecting to the database.");
$stmt = $mysqli->prepare("INSERT INTO user 
            (name, password, nationality, contactno, dateofbirth, email, address, gender, monthlysub) 
            VALUES (?,?,?,?,?,?,?,?,?)");
$stmt->execute();
$stmt->bind_param("sssssssss", $name, $pass, $nationality, $contactno, $dateofbirth, $eaddress, $address, $gender, $monthlysub);
$stmt->fetch();
$stmt->close();
$mysqli->close();
4

4 に答える 4

4

試す:

success: success,

それ以外の :

success: success(),
于 2012-11-11T18:21:42.667 に答える
0

http://phery-php-ajax.netがすでにjQueryとPHPの間のブリッジを自動的に実行しているように、それを自動的に実行するライブラリを使用できます。

phery.remote('registeruser', {
'name': name,
'pass': pass,     
'nationality': nationality,
'contactno': contactno,
'dateofbirth': dateofbirth,
'eaddress': eaddress,
'address': address,
'gender': gender,
'monthlysub': monthlysub,
});
Phery::instance()->set(array(
    'registeruser' => function($data){
      $data = array_map('strip_tags', $data);
      /* rest of mysql code */
      return PheryResponse::factory(); // do any DOM manipulation, redirect, etc
    }
))->process();
于 2012-11-12T03:30:02.097 に答える
0

これが役立つかどうかはわかりませんが、dataString変数は、postではなくgetを使用するURLに移動するように構築しているように見えます。代わりにpost変数を調べているため、phpスクリプトが渡されたものを解析する方法を知らない可能性があります。ただし、パスワードを渡すので、セキュリティ上の理由からgetを使用したくないでしょう。

于 2012-11-11T18:57:15.723 に答える
0

$ stmt-> execute()の前に$stmt->bind_paramを呼び出す必要があります。

それでも問題が解決しない場合は、問題を分析して、問題が発生したものを確認する必要があります。

1)Javascriptが呼び出されていることを確認します。JavaScriptにalert()を入れて、ページをリロードします。アラートがポップアップした場合は、問題はなく、インクルードURLの問題を除外できます。

2)Firefoxを使用している場合は、firebugをインストールしてから、F12キーを押してコンソールを表示します。HTML / registeruser.phpが呼び出され、送信されているパラメーターやその他の情報も確認できます。Chromeでもこれを行うことができます。URLが呼び出され、200の応答を受信して​​いる場合は、問題はありません。それは、除外できるもう1つのことです。

3)この時点で、JavascriptとAjax呼び出しを除外しました。そこで、データベース接続に焦点を当て、次にSQLクエリに焦点を当てます。registeruser.phpで接続した後、レコードがあることがわかっているテーブルのselectステートメントを実行し、それらをエコーアウトして、確実に接続され、正しいデータベースに接続されていることを確認します。

4)SQLステートメントをエコーし​​て、すべてのパラメーターが含まれていることを確認します。

ちなみに、exitを使用する代わりに、エラー処理もチェックする必要があります。したがって、新しいmysqli呼び出しの後に、これを追加します。

if (mysqli_connect_errno()) {
  printf("Error connecting to the database: %s\n", mysqli_connect_error());
  exit();
}
于 2012-11-11T19:33:41.320 に答える