2013-08-21 68 views
0

输入正确的用户名/密码后,登录成功显示。我想在成功登录后重定向到不同的页面,但是window.location.href不起作用。Javascript window.location.href重定向不起作用

的index.html

<form id="myFormlogin" action="login.php" method="POST"> 
    Email: 
    <input type="text" name="usernamelogin" /> 
    <br />Password: 
    <input type="password" name="passlogin" /> 
    <br /> 
    <button id="login">login</button> 
</form> 
<div id="ack"></div> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type="text/javascript" src="my_script.js"></script> 

的login.php

<?php 
include_once('db.php'); 

$username = mysql_real_escape_string($_POST["usernamelogin"]); 
$password = mysql_real_escape_string(md5($_POST["passlogin"])); 

$sql = "SELECT * FROM registered_users WHERE username='$username' and password='$password'"; 
$result = mysql_query($sql); 
if ($result) { 
    echo "login success"; 
} else { 
    echo "Wrong Username or Password"; 
} 
?> 

的script.js

("#login").click(function() { 

if($("#usernamelogin").val() == "" || $("#passlogin").val() == "") 
     $("#ack").html("Username/Password are mandatory fields -- Please Enter."); 
    else 
      window.location.href = "http://jsfiddle.net/"; 
}); 

回答

2

使用id而不是name

chnage代码为

Email: <input type="text" id="usernamelogin"/><br /> 
Password: <input type="password" id="passlogin"/><br /> 

,而不是

Email: <input type="text" name="usernamelogin"/><br /> 
Password: <input type="password" name="passlogin"/><br /> 

并使用return false防止默认动作

$("#login").click(function() { 
    if ($("#usernamelogin").val() == "" || $("#passlogin").val() == "") 
     $("#ack").html("Username/Password are mandatory fields -- Please Enter."); 
    else 
     window.location.href = "http://www.google.com"; 
    return false; 
}); 

演示:内部$(document).ready();并且还包括用户preventDefaulthttp://jsfiddle.net/satpalsingh/SzhbM/

+0

没有什么区别,和以前一样 – mbaljeetsingh

+0

@BaljeetSingh,看演示 – Satpal

+0

它在小提琴中工作,但不在我的桌面上工作。我在代码之前添加了文件名。看看问题是由于这一点。其实我登录成功(从login.php回声)。没有任何从my_script.js – mbaljeetsingh

1

我怀疑的形式马y正在提交。尝试阻止表单的默认操作。

$("#login").click(function(e) { 
    e.preventDefault(); 
    if($("#usernamelogin").val() == "" || $("#passlogin").val() == "") 
     $("#ack").html("Username/Password are mandatory fields -- Please Enter."); 
    else 
    window.location.href = "http://google.com";   

}); 
+0

表单提交,我得到的PHP回声输出不是从jQ​​uery部分,即使你的代码。 – mbaljeetsingh

1

包裹代码,所以它会执行仅定义的代码。

$("#login").click(function(e) 
{ 
    e.preventDefault(); 

而且使用的是if($("#usernamelogin").val() == "" || $("#passlogin").val() == "")这个代码,但你忘了分配IDinput领域。

这就是为什么jQuery无法找到这两个字段,并进一步停止执行脚本。

你可以在萤火虫中检查它。

注释代码响应

做出改变低于的index.html页。

<form id="myFormlogin" action="login.php" method="POST"> 
    Email: <input type="text" id="usernamelogin" name="usernamelogin"/><br /> 
    Password: <input type="password" id="passlogin" name="passlogin"/><br /> 
    <button id="login">login</button> 
</form> 

我所做的是为input字段中添加name attribute

替换你的mys_script。下面的代码

$(function() 
{ 
    $("#submit").click(function() 
    { 
     if($("#username").val() == "" || $("#pass").val() == "") 
     { 
      $("#ack").html("Username/Password are mandatory fields -- Please Enter."); 
     } 
     else 
     { 
      $.ajax({ 
       url   : $('#myForm').attr('action'), 
       data  : $('#myForm').serialize(), 
       success  : function(info) 
       { 
        $("#ack").empty(); 
        $("#ack").html(info); 
        clear(); 
       } 
      }); 
     } 
    }); 

    function clear() 
    { 
     $("form :input").each(function() { 
      $(this).val(""); 
     }); 
    } 

    $("#login").click(function() 
    { 
     if($("#usernamelogin").val() == "" || $("#passlogin").val() == "") 
     { 
      $("#ack").html("Username/Password are mandatory fields -- Please Enter."); 
     } 
     else 
     { 
      $.ajax({ 
       url   : $('#myFormlogin').attr('action'), 
       data  : $('#myFormlogin').serialize(), 
       success  : function(info) 
       { 
        $("#ack").empty(); 
        $("#ack").html(info); 
        clear(); 
       } 
      }); 
     } 
    }); 
}); 

,最终使你的login.php文件,如下修改JS,

所有的
<?php 
include_once('db.php'); 
$username = mysql_real_escape_string($_POST["usernamelogin"]); 
$password = mysql_real_escape_string(md5($_POST["passlogin"])); 

$sql="SELECT * FROM registered_users WHERE username='$username' and password='$password'"; 
$result=mysql_query($sql)or die(mysql_error()); 
$count = mysql_num_rows($result); 


if($count==1) 
{ 
    echo "found user"; 
} 
else 
{ 
    echo "Wrong Username or Password"; 
} 
?> 
+0

不知道为什么只有PHP代码回声,在包装后 – mbaljeetsingh

+0

@BaljeetSingh以及我不明白你的意思..?我看到你正在用静态内容替换html,所以从PHP代码回显。 –

+0

问题是,jQuery代码根本没有执行 – mbaljeetsingh

1

首先使用ID选择,而不是name。所以在两个输入添加ID:

Email: <input type="text" name="usernamelogin" id="usernamelogin"/><br /> 
Password: <input type="password" name="passlogin" id="passlogin"/><br /> 

然后切换功能:

$(document).ready(function(){ 
    $("#login").click(function() { 
     if($("#usernamelogin").val() == "" || $("#passlogin").val() == "") 
      $("#ack").html("Username/Password are mandatory fields -- Please Enter."); 
      return false; 
     else 
      window.location.href = "http://google.com";   
      return false; 
    }); 
}); 

并设置return false,以防止默认动作。

+0

我发现一个问题,无论我只做php代码回声。 (甚至在此之后) – mbaljeetsingh

+0

你有主文件中添加myscript.js文件? –

+0

是的index.html中(也编辑在代码中) – mbaljeetsingh