2016-08-15 1 views
0

Ich versuche eine Seite zu schreiben, um eine POST-Anfrage zu einem PHP-Skript zu machen und ich fühle mich wie ich es richtig gemacht habe, es funktioniert überall sonst so scheint es, aber ich bekomme immer ein " nicht identifizierter Fehler "und es wird nicht funktionieren, wie kann ich das zum Funktionieren bringen?PHP Beitrag Anfrage nicht identifiziert Index Fehler

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

Bitte senden Sie den HTML-Code zu und t Er beendet die Fehlermeldung. –

+1

Ihre jquery sollte eine ID haben wie 'id = '#' und class = '.'' Beispiel:' $ (# email) .val() ' – aldrin27

Antwort

0

Sie müssen richtig Jquery verwenden.
Zum Beispiel var email = $("email").val(); //IS WRONG sein sollte (wenn Sie input id = „email“ haben) var email = $("#email").val(); Wenn Sie nur können Sie var email = $("[name='email']").val();

Ein bisschen offtopic verwenden Namen haben: Wenn Sie Ajax-Formular verwenden, berücksichtigen jquery-Methode serialisieren https://api.jquery.com/serialize/ für alle Formularwerte (oder einige Jquery Ajaxform-Plugin).

Und bitte! mache keine unsicheren mysql-Anweisungen. Benutze für die Götter vorbereitete Aussagen. Wenn Sie sehr einfach brauchen Zeug nur vorbereitete Anweisungen verwenden oder https://phpdelusions.net/pdo/pdo_wrapper

auch eine kleine Spitze betrachten: vor echo json json Header machen <?php header('Content-type:application/json;charset=utf-8');

+0

Ich bin extrem neu im Umgang mit MySQL in PHP, also nehme ich ein aussehen – HJGBAUM

0

Es gibt viele Gründe, Ihre Code funktioniert nicht. @AucT und @gentle haben Ihre Probleme mit der Javascript-Seite angesprochen, deshalb werde ich mich auf PHP konzentrieren. Ihre Abfrage-Code ist:

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

Beachten Sie, dass:

  • Sie nie ausführen Sie abfragen. $sql ist nur eine Zeichenfolge im Speicher gehalten.
  • Sie mischen mysqli Funktion mit mysql_ Funktion (mysql_affected_rows); das wird nicht funktionieren
  • Sie Einfügen von POST-Daten direkt in Ihre Fragen, so dass Sie sind sehr anfällig für SQL injection
  • Am Ende echo Sie JSON, aber Sie haben nicht den Browser zu erwarten dieses Format erzählt

tun Sie dies statt:

$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

ich glaube, Sie mit Ihrem jquery Daten verwechselt werden, sollten sie den Bezeichner id von ‚#‘ bezeichnet haben und Klassen bezeichnet mit‘.‘, Tun Sie es dies ist, dass Sie id =‚Name des Feldes‘unter den Eingangsparameter:

$(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 wie dies Sie haben class =‚Name des Feldes‘unter den Eingangsparameter:

$(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"; 
    }}); 
}); 
}); 

oder wenn Sie diese verwenden möchten, folgen Sie den Namen direkt:

$(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"; 
    }}); 
}); 
}); 

ich hoffe, das hilft Ihnen