繁体   English   中英

我的服务器端php无法从我的客户端AJAX获取数据

[英]My server side php doesn't get the data from my client side AJAX requiest

这是我的AJAX代码:

 $("#loginbutton").click(function(){
              var email = $('#email').val();
              var password = $('#password').val();
              $.ajax({
               url: 'login.php',
               type: 'POST',
               dataType: 'json',
               data: { email:email, password:password},
               success: function(data){
                 $("#samplediv").innerHTML ="Welcome";
                }
              });
             });

这是我的PHP:

 <?php
 session_start();
 $conn = mysqli_connect("localhost", "root", "", "getpet");
 if(isset($_POST['email'])){
   echo $_POST['email'];
 }
?>

如您所见,它将是一个登录系统,但是php不会写出$_POST['email']变量。 我认为这可能是语法错误,只是我太盲目了。 如果有人可以帮助我,我将不胜感激。

更新:这是我的整个PHP代码,我认为这无关紧要,但这就是为什么我使用dataType:json。

 <?php
 session_start();
 $conn = mysqli_connect("localhost", "root", "", "getpet");
 if(isset($_POST['email'])){
   echo $_POST['email'];
 }/*
 $results = array(
   'success' => false,
   'user_id' => "azaz",
   'fname' => "",
   'lname' => ""
 );
 if(!empty($_POST['email']) && !empty($_POST['password'])){
        $email = $_POST['email'];
        $password = md5($_POST['password']);
        $sql= "SELECT * FROM users WHERE email = '$email' AND password = '$password'";
        $rowsql = mysqli_query($conn, $sql);
        $row = mysqli_fetch_array($rowsql, MYSQLI_BOTH);
        if(mysqli_num_rows($rowsql) == "1"){
            $_SESSION['user_id'] = $row['user_id'];
            $_SESSION['fname'] = $row['fname'];
            $_SESSION['lname'] = $row['lname'];

      $results['success'] = true;
      $results['user_id'] = $row['user_id'];
      $results['fname'] = $row['fname'];
      $results['lname'] = $row['lname'];
      }
    }

            //echo json_encode($results);*/
 ?>

在数据对象中,键不是字符串,而是定义的变量。 这样可以从字面上获取emailpassword

data: { 'email':email, 'password':password},

我认为这是一个跨源问题,但通常在控制台中显示。 将错误输出附加到您的json并查找,如果它是php错误,您将立即注意到。

$.ajax({
    url: 'login.php',
    type: 'POST',
    dataType: 'json',
    data: { email:email, password:password},
    success: function(data){
        $("#samplediv").innerHTML ="Welcome";
    },
    error: function (jqXHR, textStatus, errorThrown) {{
        console.error('ajax response failed');
        console.log(jqXHR.responseText);
    }
});

->确保确保调用jQuery :)->准备好添加文档->添加防止默认设置->使用输入而不是按钮只是我的方便

<script type="text/javascript">

$(document).ready( function() { /* only when everything is set up */

$("#loginbutton").click(function(e){
e.preventDefault();

          var email = $('#email').val();
          var password = $('#password').val();
          $.ajax({
           url: "login.php",
           method: "POST", /* changed to `method` */
           data: "email="+email+"&password="+password, /* MODIFIED */
           success: function(data){
             alert(data);
             $("#samplediv").html("Welcome !");
            },
           error: function (request, status, error) { /* added error handling */
           alert(request.responseText);
           }
          });
         });
  });
</script>

<div id="samplediv"></div>

<form action="#" id="form" method="post">
<p><input type="text" name="email" id="email" value="" /> email</p>
<p><input type="text" name="password" id="password" value="" /> pwd</p>
<input type="submit" id="loginbutton" value="GO" />
</form>

当然,请输入输入password

由于我不知道您为什么用DB连接(可能选择?),我只是将php文件简化了,如下所示:

<?php
/* login.php */
error_reporting(E_ALL); ini_set('display_errors', 1);

$email = $_POST['email'];
$pwd = $_POST['password'];

echo"[ email > $email / pwd : $pwd ]"; /* for example only, of course, not with real credentials  */

?>

编辑原始问题后,我看到了php代码,我会建议

不再使用MD5,而是使用password_hash / password_verify

您应该真正考虑使用PPS:预准备的参数化语句 这将有助于防止SQL注入

$("#samplediv").innerHTML ="Welcome"; 是错的

您在这里有一个jquery元素,并尝试使用香草函数进行访问。

$("#samplediv").text("Welcome");
// or 
$("#samplediv")[0].innerHTML = "Welcome";

如果打开浏览器开发工具,它将显示以下错误:

innerHTML不是...的功能

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM