[英]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);*/
?>
在數據對象中,鍵不是字符串,而是定義的變量。 這樣可以從字面上獲取email
和password
:
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.