我想創建一個Ajax函數,作出基於來自PHP的返回變量的決定。我遇到的主要問題是,當我將它打印到html類時,返回var將正確顯示,但是在ajax中的決定仍產生相同的結果false
。爲什麼它不工作:jquery Ajax成功數據與PHP返回變量
下面是PHP形式:
<form class="LogInForm" method="post" action="Auth.php" >
<div class="form-group">
<input type="email" class="form-control" name="email" placeholder="Email Address" value="<?php echo $_SESSION['email'];?>">
</div>
<div class="form-group">
<input type="password" class="form-control" name="pw" placeholder="password">
</div>
<button type="submit" class="btn btn-default btn-block">Submit</button>
及以下的jQuery腳本:
$('.LogInForm').on('submit', function(e){
var values = $(this).serialize();
// get value of action attribute
var desination = $('.RemoveProd').prop('action');
// get current location url
// prevent page from leaving to desination
e.preventDefault();
$.ajax({
url: desination,
type: 'post',
data: values,
success: function(data){
if(data == 1){;
alert("True");
$('.Test').html(data);
}
else{
alert("False");
$('.Test').html(data);
}
},
error: function(){
}
});
});
PHP函數:
function Auth()
{
//start session and compture login info
$pass = md5($_POST['pw']);
$user = $_POST['email'];
//connect to DB
$conn = Connect();
//Select all queries
$select = "SELECT Email, Password FROM customers WHERE Email ='".$user."' AND Password = '".$pass."'";
$results = $conn->query($select);
//search in db for user and passwrod, also store quires in var to store in sessions.
if ($results->num_rows > 0) {
$bool = true;
}
else{
$bool= false;
}
echo $bool;
}
什麼情況是,如果我沒有放入正確的密碼,如果提醒我False
,並在提交按鈕下告訴我什麼是數據(這是null
)。當我輸入正確的密碼時,它仍會提醒我False
,但數據顯示在提交按鈕下方爲1
。
還要注意何時繞過Ajax函數PHP函數可以正常工作。
更新 我能夠得到這個工作。我所做的只是將php文件Auth.php移動到另一個目錄,似乎解決了這個問題。我知道這不是一個文件路徑問題。我感謝大家的時間,並感謝您回答並指出我的方向正確,並帶有安全漏洞。
您設置一個AJAX網址爲'無功desination = $託( '(」 RemoveProd。')。行動'); ',具有類'RemoveProd'的元素在哪裏?如果沒有這樣的元素,那麼你沒有通過網址到ajax ... – DouglasCamargo
試圖比較你的反應作爲一個字符串? 'if(data ==='1')' –
附註:'$ pass = md5($ _ POST ['pw']);'不是一種很好的密碼驗證方式。注意'password_verify()'和'password_hash()' – Rasclatt