2016-08-15 18 views
0

私はPHPスクリプトへのPOSTリクエストを作成するページを作成しようとしています。私はそれを正しく行ったように感じています。それは他のどこでも働いているようですが、未確認のエラー "と動作しません、どうすればこれを動作させることができますか?PHPポストリクエスト未確認のインデックスエラー

Javascriptを:

$(document).ready(function() { 
    $("#x").click(function() { 
     var email = $("email").val(); 
     var pass = $("password").val(); 
     var confirmPass = $("confirmPassword").val(); 
     var name = $("name").val(); 
     var question = $("question").val(); 
     var answer = $("answer").val(); 

     if(pass != confirmPass) { 
      alert("Passwords do not match!"); 
      return; 
     } 

     var stuff = {email: email, pass: pass, name: name, question: question, answer: answer}; 

     $.ajax({method: "POST", url: "addAccount.php", data: stuff, success: function(result) { 
      alert(result); 
      window.location.href = "../Dashboard"; 
     }}); 
    }); 
}); 

PHP:

<?php 
    $servername = "localhost"; 
    $username = "root"; 
    $password = "*********"; 
    $dbname = "myDB"; 

    $conn = new mysqli($servername, $username, $password, $dbname); 

    $email = $_POST["email"]; 
    $pass = $_POST["pass"]; 
    $name = $_POST["name"]; 
    $question = $_POST["question"]; 
    $answer = $_POST["answer"]; 

    $sql = "INSERT INTO accounts (accountEmail, accountPassword, accountName, accountQuestion, accountRecover) VALUES ('$email', '$pass', '$name', '$question', '$answer')"; 
    $conn->close(); 

    if(mysql_affected_rows() > 0) { 
     $response = "Account added successfully!"; 
    } 
    else { 
     $response = "Couldn't add account!"; 
    } 

    $pre = array("Response" => $response); 
    echo json_encode($pre); 
?> 
+0

を役に立てば幸い

$(document).ready(function() { $("#x").click(function() { var email = $("input[name='email']").val(); var pass = $("input[name='pasword']").val(); var confirmPass = $("input[name='confirmPassword']").val(); var name = $("input[name='name']").val(); var question = $("input[name='question']").val(); var answer = $("input[name='answer']").val(); if(pass != confirmPass) { alert("Passwords do not match!"); return; } var stuff = {email: email, pass: pass, name: name, question: question, answer: answer}; $.ajax({method: "POST", url: "addAccount.php", data: stuff, success: function(result) { alert(result); window.location.href = "../Dashboard"; }}); }); }); 

をあまりにもHTMLコードを投稿してくださいトン彼は完全なエラーメッセージを出します。 –

+1

あなたのjqueryは 'id = '#'やclass = '。''のような識別子を持っているはずです。例: '$(#email).val()' – aldrin27

答えて

0

あなたが適切にjqueryのを使用する必要があります。 var email = $("email").val(); //IS WRONG 例えば
(あなたは=「電子メール」入力されたIDを持っている場合)あなただけが var email = $("[name='email']").val();

ビットofftopic使用することができ命名している場合は var email = $("#email").val(); であるべき:あなたは、フォームのAJAXを使用している場合は を提出考えますjqueryメソッドはすべてのフォーム値(またはjquery ajaxformプラグイン)を取得するためにhttps://api.jquery.com/serialize/をシリアル化します。

してください!安全でないmysql文を作成しないでください。神々のために準備された文を使用してください。 あなたは非常に基本的なものだけでプリペアドステートメントを使用するか、またhttps://phpdelusions.net/pdo/pdo_wrapper

小さな先端考慮する必要がある場合:エコーJSON前に、あなたのコードが動作していない理由の多くがあります <?php header('Content-type:application/json;charset=utf-8');

+0

PHPでMySQLを使うのは非常に新しいので、見える – HJGBAUM

0

JSONヘッダ作ります。 @AucTと@gentleはJavascriptの問題を解決しているので、私はPHPに焦点を当てます。クエリのコードは次のとおりです。あなたはあなたのクエリを実行することはありません

  • :という

    $conn = new mysqli($servername, $username, $password, $dbname); 
    $sql = "..."; 
    $conn->close(); 
    

    注意してください。 $sqlは単なる文字列で、メモリに保持されます。

  • mysqliの機能はmysql_となります(mysql_affected_rows);それはあなたが直接あなたのクエリにPOSTデータを挿入しているので、あなたは終わりSQL injection
  • に非常に脆弱である
  • を動作しません、あなたはJSONをエコーし​​ますが、このフォーマットを期待して、ブラウザを告げていない

代わりにこれを行います。

$conn = new mysqli(...); 
//SQL with ? in place of values is safe against SQL injection attacks 
$sql = "INSERT INTO accounts (accountEmail, accountPassword, 
      accountName, accountQuestion, accountRecover) VALUES (?, ?, ?, ?, ?)"; 

$error = null; 
//prepare query and bind params. save any error 
$stmt = $conn->prepare($sql); 
$stmt->bind_param('sssss',$email,$pass,$name,$question,$answer) 
     or $error = $stmt->error; 

//run query. save any error 
if(!$error) $stmt->execute() or $error = $stmt->error; 

//error details are in $error 
if($error) $response = "Error creating new account"; 
else $response = "Successfully created new account"; 

//set content-type header to tell the browser to expect JSON 
header('Content-type: application/json'); 
$pre = ['Response' => $response]; 
echo json_encode($pre); 
0

を私はあなたのjqueryのデータと間違っている、彼らは「#」と「で示されたクラスで表さIDのような識別子を持つべきだと思います。」、これはあなたが入力パラメータのうちのid = 『フィールド名』を持っている、それを実行します。

$(document).ready(function() { 
$("#x").click(function() { 
    var email = $("#email").val(); 
    var pass = $("#password").val(); 
    var confirmPass = $("#confirmPassword").val(); 
    var name = $("#name").val(); 
    var question = $("#question").val(); 
    var answer = $("#answer").val(); 

    if(pass != confirmPass) { 
     alert("Passwords do not match!"); 
     return; 
    } 

    var stuff = {email: email, pass: pass, name: name, question: question, answer: answer}; 

    $.ajax({method: "POST", url: "addAccount.php", data: stuff, success: function(result) { 
     alert(result); 
     window.location.href = "../Dashboard"; 
    }}); 
}); 
}); 

ORこのようにすると、入力パラメータのうちクラス= 『フィールド名』を持っている:

$(document).ready(function() { 
$("#x").click(function() { 
    var email = $(".email").val(); 
    var pass = $(".password").val(); 
    var confirmPass = $(".confirmPassword").val(); 
    var name = $(".name").val(); 
    var question = $(".question").val(); 
    var answer = $(".answer").val(); 

    if(pass != confirmPass) { 
     alert("Passwords do not match!"); 
     return; 
    } 

    var stuff = {email: email, pass: pass, name: name, question: question, answer: answer}; 

    $.ajax({method: "POST", url: "addAccount.php", data: stuff, success: function(result) { 
     alert(result); 
     window.location.href = "../Dashboard"; 
    }}); 
}); 
}); 

か、直接この従う名前を使用する場合:私はこれがあなた

関連する問題