【发布时间】:2016-08-24 19:52:27
【问题描述】:
由于某种原因,“window.location.href”功能对我不起作用,似乎无法找出原因。 这是 index.php 中的代码:
<div class="dropdown-menu">
<div style="width: 300px;">
<div class="panel panel-primary">
<div class="panel-heading">Login</div>
<div class="panel-heading">
<label for="email">Email</label>
<input class="form-control" id="email" name="email" required />
<label for="password">Password</label>
<input type="password" class="form-control" id="password" name="password" required />
<p><br/></p>
<a href="#">Forgotten Password</a><input type="button" class="btn btn-success" name="login" id="login" value="Login">
</div>
</div>
<div class="panel-footer"></div>
</div>
</div>
这就是jQuery函数中提到的“action.php”文件中的函数:
<?php
if(isset($_POST["userLogin"])){
$email = mysqli_real_escape_string($con, $_POST["userEmail"]);
$password = md5($_POST["userPassword"]);
$sql = "SELECT * FROM user_info WHERE email = '$email' AND password = '$password'";
$run_query = mysqli_query($con, $sql);
if($run_query===false){
echo mysqli_error($con);
} else {
$row = mysqli_fetch_array($run_query);
$_SESSION["uid"]= $row["user_id"];
$_SESSION["name"]= $row["first_name"];
echo "welcome";
}
}
?>
这是带有 AJAX 功能的 jQuery:
$(document).ready(function(){
$("#login").click(function(event){
event.preventDefault();
var email = $("#email").val();
var pass = $("#password").val();
$.ajax({
url : "action.php",
method : "POST",
data : {userLogin: 1, userEmail:email, userPassword:pass},
success : function(data){
if(data == "welcome"){
window.location.href = "profile.php";
}
/* alert(data);*/
}
});
});
});
注意事项: 正如您在 jQuery 函数中看到的那样,有:“alert(data);”。我想看看它是否有效,并在没有“window.location.href”功能的情况下将其放在屏幕上,以查看“if”语句是否正确,并且它确实有效。此外,当我直接转到 profile.php 文件时,我看到用户已登录,这对我来说意味着 SQL 函数工作正常,只是它不会将我重定向到那个(profile.php)页面。
【问题讨论】:
-
@CharlotteDunois 不,你没有。如果你现在做
window.location.href = "/subdir",你会被带到http://stackoverflow.com/subdir -
我认为他缺少正斜杠是导致错误的原因。
-
您未能测试您的 if 语句是否有效。
-
在来到这里并发布一个标题为“window.location.href is not working”的问题之前,您应该已经将该行直接粘贴到您的控制台中,从而证明它实际上是有效的.然后你回到绘图板上,找出实际不起作用的地方。
-
if(data == "welcome")很可能是错误的,因为您(可能)无意中在 php 文件中打印了一些空白。在检查 == "welcome" 之前尝试修剪 ajax 结果:if($.trim(data) == "welcome")
标签: javascript php jquery html ajax