2013-03-25 126 views
0

我想转换我的登录页面使用HTML和使用jQuery和PHP来获取和处理结果,原因是如果我想移动与我的项目,那么我几乎在那里。将变量从php传递回jquery?

我遇到的问题是将变量从php传递回jquery以同时显示。

我的例子 的index.html

<!DOCTYPE HTML> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1">  
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"> 
    <title>Auth Demo 2</title> 
    <script src="jquery/jquery-1.7.2.min.js"></script> 
    <script src="main.js"></script> 
</head> 

<body onload="handleLogin()"> 

     <form id="loginForm"> 

      <label for="email">Email:</label> 
      <input type="text" name="email" id="email" value="" placeholder="email" /> 



      <label for="password">Password:</label> 
      <input type="password" name="password" id="password" value="" placeholder="Password" /> 


     <input type="submit" value="Login" id="submitButton"> 
     </form> 

</body> 
</html> 

main.js

function handleLogin(){ 

     var form = $("#loginForm"); 
     var u = $("#email", form).val(); 
     var p = $("#password", form).val(); 

     if(u!= '' && p!= '') { 
      $.post("http://www.mysite.co.uk/login.php",{ 
         email:$('#email', form).val(), 
         password:$('#password', form).val(), 
         rand:Math.random() 
         } ,function(data) 
          { 
          if(data=='yes') //if correct login detail 
          { 
           alert("Request success: "); 
          } 
          else 
          { 
            //add reason in alert box here 
            alert ("failed reason") 
           } 
        }); 
     } else { 
        alert("Username/password empty"); 
       } 
     return false;//not to post the form physically 

    } 

的login.php

<?//get the posted values 
require_once("../backend/functions.php"); 
dbconn(true); 


if ($_POST["email"] && $_POST["password"]) { 
    $password = passhash($_POST["password"]); 

    if (!empty($_POST["email"]) && !empty($_POST["password"])) { 
     $res = SQL_Query_exec("SELECT id, password, secret, status, enabled FROM users WHERE email = " . sqlesc($_POST["email"]) . ""); 
     $row = mysql_fetch_assoc($res); 

     if (! $row || $row["password"] != $password) 
      $message = "Wrong password"; 
     elseif ($row["status"] == "pending") 
      $message = "Account Pending"; 
     elseif ($row["enabled"] == "no") 
      $message = "Account Suspened"; 
    } else 
     $message = "No Username/password added"; 

    if (!$message){ 
     logincookie($row["id"], $row["password"], $row["secret"]); 
     if (!empty($_POST["returnto"])) { 
      header("Refresh: 0; url=" . $_POST["returnto"]); 
      die(); 
     } 
     else { 
      echo "yes"; 
      die(); 
     } 
    }else{ 
     echo $message; 
    } 
} 

logoutcookie(); 

当登录失败有我想要的各种原因,你可以看到返回到警报框。什么是最好的方式去做这个

+0

我花了正好2分钟格式化你的答案(用奇怪的fromatting)......该死的!!我仍然看到一些额外的空间.. :( – bipen 2013-03-25 11:43:22

+0

你没有提交表格任何地方。 – Jai 2013-03-25 11:45:15

+1

对不起Bipen下次会确定它的整洁 – 2013-03-25 11:58:43

回答

1

只是警报数据

if(data=='yes') //if correct login detail 
    { 
     alert("Request success: "); 
    } 
    else{ 
     alert (data) 
    } 

但是我recommmend获得响应的JSON .....

if(u!= '' && p!= '') { 
    $.post("http://www.mysite.co.uk/login.php",{ 
       email:$('#email', form).val(), 
       password:$('#password', form).val(), 
       rand:Math.random() 
     } ,function(data) 
      { 
       if(data=='yes') //if correct login detail 
       { 
        alert("Request success: "); 
       } 
       else 
       {              //add reason in alert box here 
        alert (data) 
       } 
      }); 

    } else { 
     alert("Username/password empty"); 
    } 

    return false;//not to post the form physically 
    } 
+0

这工作谢谢,我会研究json,因为你们都推荐它,我确定一旦我得到它的把握。它将在未来帮助我;) – 2013-03-25 12:08:08

+0

欢迎..并看看JSON ...它更好地使用... :)):)...快乐的编码.. :) – bipen 2013-03-25 12:10:40

0

做到这一点的最好方法是使用$ .ajax()并使用“XML”类型。然后让login.php返回一个XML文件,其中包含您需要的任何参数(用户标识,错误消息(如果有),用户名等)。然后,您可以使用jQuery解析XML文件以立即使用这些变量。无论如何,处理后端错误更为安全。

0
function handleLogin(){ 

    var form = $("#loginForm"); 
    var u = $("#email", form).val(); 
    var p = $("#password", form).val(); 

    if(u!= '' && p!= '') { 

     jQuery.ajax({ 
      type: "POST", 
      url: "http://www.mysite.co.uk/login.php", 
      data: 'username='+u+'&password='+p+'&rand='+Math.random(), 
      complete: function(data){ 

       if(data.responseText == 'yes'){ 
        alert("Request success: "); 
       }else{ 
        alert("failed: "); 
       } 

     }); 

    } else { 

     alert("Username/password empty"); 

    } 

    return false;//not to post the form physically 

}