2017-05-26 107 views
-3

我在阿贾克斯新我感到困惑becouse我想我的AJAX文件没有将数据发送到PHP文件或PHP是没有得到它,IDK,请帮助我Ajax不是将数据发送到PHP

这的形式是

<form id="register-form" method="post" role="form" style="display: none;"> 
              <div class="form-group"> 
               <input type="text" name="username" id="username" tabindex="1" class="form-control" placeholder="Username" value=""> 
              </div> 
              <div class="form-group"> 
               <input type="text" name="email" id="email" tabindex="1" class="form-control" placeholder="Email Address" value=""> 
              </div> 
              <div class="form-group"> 
               <input type="password" name="password" id="password" tabindex="2" class="form-control" placeholder="Password"> 
              </div> 
              <div class="form-group"> 
               <input type="password" name="confirm-password" id="confirm-password" tabindex="2" class="form-control" placeholder="Confirm Password"> 
              </div> 
              <div class="form-group"> 
               <div class="row"> 
                <div class="col-sm-6 col-sm-offset-3"> 
                 <input type="submit" name="register-submit" id="register-submit" tabindex="4" class="form-control btn btn-register" value="Register Now"> 
                </div> 
               </div> 
              </div> 
             </form> 

这是的.js

$(document).ready(function(){ 
$("#register-submit").click(function(){ 
    var email = $("#email").val(); 
    var username = $("username").val(); 
    var password = $("password").val(); 

    $.ajax({ 
     type: "POST", 
     url: "register.php", 
     data: "email="+email+"&username="+username+"&password="+password, 

     success:function(data){ 
      alert("succes"); 
     } 
    }); 
}); 

});

这是.PHP

<?php 
require_once("functions.php"); 

    $email = $_POST["email"]; 
    $username $_POST["username"]; 
    $password $_POST["username"]; 
    mysqli_query($connection, "INSERT INTO users(email, username, password) VALUES('$email', '$username', '$password')");?> 
+1

您需要更好地解释问题,什么是不工作,为什么你认为它不工作,你已经试图自己解决它,等等。 “idk请帮助我”不是一个问题。如果我是一个博彩人,我会冒险猜测您的页面在AJAX调用完成之前刷新,因为您正在使用“submit”按钮而不会阻止其实际提交。 (即'preventDefault()') – Santi

+0

'$ username $ _POST [“username”]; $ password $ _POST [“username”];'一件事,是翻倍的。 –

+0

'$ username $ _POST [“username”]; $ password $ _POST [“username”];''=''''''''''''''' – Juned

回答

0
$(document).ready(function(){ 
$("#submit").click(function(event) { 
    event.preventDefault(); 

    var inputEmail = $("#email").val(); 
    var inputUsername = $("#username").val(); 
    var inputPassword = $("#password").val(); 

    $.ajax({ 
      type: "POST", 
      url: "register.php", 
      data: ({ email: inputEmail, password: inputPassword, username: inputUsername}), 
      success: function(data){ 
       var obj = jQuery.parseJSON(data); 

       alert("Success " + obj.username + " " + obj.password + " "+ obj.email); 
      } 
    }); 


}); 

});

在这里,在.js文件中我把在顶部.click(function(event) { event.preventDefault(); }

preventDefault(); 

这个功能阻止该网页realoding当您按下提交按钮

data: ({ email: inputEmail, password: inputPassword, username: inputUsername}) 

在这里,我将数据发送data: ({nameOfTheVarieableYouWantToReadWithPHP: nameOfTheVariableFromJs})

这里是.php文件

require_once("database.php"); //require the connection to dabase 

$email = protect($_POST['email']);  //This will read the variables 
$username = protect($_POST['username']); //sent from the .js file 
$password = protect($_POST['password']); // 

$result = array(); //This variable will be sent back to .js file 
//check if the variables are emtpy 
if(!empty($email) && !empty($username) && !empty($password)){ 
    //db_query is my function from database.php but you can use mysqli_query($connectionVariable, $sqlString); 
    db_query("INSERT INTO users (email, username, password) VALUES ('$email','$username','$password')"); //Here insert data to database 
//we will set array variables 
$result['username'] = $username; //Here we set the username variable fron the array to username variable from js 
$result['password'] = $password; // the password same as the username 
$result['email'] = $email; //the email same as the username and password 
}else{ // if the variables are empty set the array to this string 
    $result = "bad"; 
} 
echo json_encode($result); //transform the result variable to json 

在。js文件

 success: function(data){ 
      var obj = jQuery.parseJSON(data); //create a variable and parse the json from the php file 
      //You can set the variables get from the json 
      var usernameFromPhp = obj.username; 
      var passwordFromPhp = obj.password; 
      var emailFromPhp = obj.email; 

      alert("Success " + usernameFromPhp + " " + passwordFromPhp + " "+ emailFromPhp);// 
     } 
+0

发表评论如果有什么不明确的,我回答最好的我可以 – Bidijoe45

+0

这对我有效 – Bidijoe45

2

首先:

var username = $("username").val(); 
var password = $("password").val(); 

应该是:

var username = $("#username").val(); 
var password = $("#password").val(); 


data: "email="+email+"&username="+username+"&password="+password 

应该是:

data: {email: email, "username": username, password: password} 

而且

$username $_POST["username"]; 
$password $_POST["username"]; 

应该是:

$username = $_POST["username"]; 
$password = $_POST["password"]; 
+1

'$ username = $ _POST [“username”]; $ password = $ _POST [“username”];'所以密码是用户名的POST数组;我怀疑这会让他们失望。 –

0

1:而不是使用submit input点击事件,你可以使用form submit event

$("#register-form").on('submit',function(){ 

,并在您使用一个提交确定你需要防止从默认重新加载页面..我认为你的问题是这一点..所以你需要通过使用e.preventDefault();阻止形式,你可以使用我像

$("#register-form").on('submit',function(e){ 
    e.preventDefault(); 
    // rest of code here 
0

如果将t发送JSON格式的数据,如:

var data = { "email": email, "username": username, "password": password }; 

这样传递数据的VAR在数据的Ajax功能!