【发布时间】:2017-10-18 04:18:23
【问题描述】:
action.php 中的代码
if(isset($_POST["username"]))
{
$query = "
SELECT * FROM Admin
WHERE Username = '".$_POST["username"]."'
AND Password = '".$_POST["password"]."'
";
$result = mysqli_query($connect, $query);
if(mysqli_num_rows($result) > 0)
{
$_SESSION['username'] = $_POST['username'];
echo 'Yes';
}
else
{
echo 'No';
}
}
if(isset($_POST["action"]))
{
unset($_SESSION["username"]);
}
index.php 中的代码
$(document).ready(function(){
$('#login_button').click(function(){
var username = $('#username').val();
var password = $('#password').val();
if(username != '' && password != '')
{
$.ajax({
url:"action.php",
method:"POST",
data: {username:username, password:password},
success:function(data)
{
//alert(data);
if(data == 'No')
{
alert("Wrong Data");
}
else
{
$('#loginModal').hide();
location.reload();
}
}
});
}
在上面的 index.php 代码中,总是执行 else 部分。所以我相信没有从action.php代码中接收到数据但是$_SESSION['username'] = $_POST['username'];在action.php代码中的部分代码被执行了。
所以我的问题是为什么没有按预期发送“是”或“否”。
我们将不胜感激任何形式的帮助;
【问题讨论】:
-
alert(data)显示什么?您是否尝试过确保您的 php 脚本没有创建额外的空白?即在data上使用trim() -
没有多余的空格@Patrick
-
如果 trim() 成功了,那就成功了。正如 trim 所做的那样,删除前导/尾随空格
-
@PatrickEvans 如上面 action.php 中的代码所示,没有空格。但是当我尝试这个时: alert('('+data+')');它打印(否)。即,有额外的空间。我不明白为什么会出现这种行为。
-
空白可以是任何空格,包括新行。这通常是因为您在 php 标签
<?php ?>之外有一些空白区域,这些空白区域可能不容易看到。始终确保在这些标记之前或之后没有空格,或者确保在适当的地方使用 trim()
标签: javascript php ajax login