簡體   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