2015-02-24 70 views
0

我正在嘗試使用ajax顯示來自php的結果登錄。但這不起作用。它顯示錯誤像這樣的未定義索引。

說明:未定義指數:在USEREMAIL C:\ XAMPP \ htdocs中\控制器\上線login.controllers.php 10

說明:未定義指數:在userPassword的 C:\ XAMPP \ htdocs中\控制器\上線10 login.controllers.php

登錄失敗

這裏是我的源代碼: login.views.php

<form id="loginForm" action="/controllers/login.controllers.php" method="post"> 
    <input id ="userEmail" type="text" name="userEmail" placeholder="Email"> 
    <input id ="userPassword" type="password" name="userPassword" placeholder="Password"> 
    <button id ="loginSubmit" type="submit" name="loginSubmit">Login</button> 
    <div id="msg"></div> 
</form> 

login.Controller.php

<?php 

    include("../models/user.models.php"); 
    include("../models/dataBase.models.php"); 
    $dbc = new dataBase(); 
    $connect = $dbc->connect('localhost','root','','how_database','','hide'); 

    if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
     $user = new user(); 
     if ($user->login($connect,$_POST['userEmail'],$_POST['userPassword']) == true){ 
      echo "Login Successful"; 
     } 
     else { 
      echo "Login failed"; 
     } 
    } 

    $dbc->close($connect); 
?> 

loginAjax.js

$("#loginSubmit").click(function(){ 
    if ($("#userEmail").val() == "" || $("userPassword").val() == "") { 
     $("div#msg").html("Please enter your email and password"); 
    } 
    else { 
     $.post(
      $("#loginForm").attr("action"), 
      $("#loginForm:input").serializeArray(), 
      function(data){ 
       $("div#msg").html(data); 
      } 
     ); 
    } 

    $("#loginForm").submit(function(){ 
     return false; 
    }) 
}); 

更新問題: 現在我想補充信息 「等待」 時,單擊提交按鈕後,隱藏它何時顯示結果消息。我必須做什麼?。謝謝。

+3

嘗試'$( 「#登錄表單」)連載''的$( 「#登錄表單:輸入」),而不是()。serializeArray()' – 2015-02-24 11:22:18

+0

謝謝。它的工作。 :)。但你可以向我展示他們之間的不同嗎? – 2015-02-24 11:29:26

+0

我給你添了一個答案。 – 2015-02-24 11:31:52

回答

0

如果您需要的名單上呼籲serialize()form,不serializeArray()投入。試試這個:

$.post(
    $("#loginForm").attr("action"), 
    $("#loginForm").serialize(), 
    function(data){ 
     $("div#msg").html(data); 
    } 
); 

函數之間的區別是格式輸出。 serializeArray()返回一個對象,該對象可能與接收端點的格式不正確,並且serialize()將表單的值轉換爲查詢字符串。

0

試試這個:

$("#loginSubmit").click(function(){ 
    if ($("#userEmail").val() == "" || $("userPassword").val() == ""){ 
     $("div#msg").html("Please enter your email and password"); 
    }else{ 
     var formData = new FormData($("#loginSubmit")[0]); 
     $.ajax({ 
      url: $("#loginForm").attr("action"), 
      type: 'POST', 
      data: formData, 
      async: false, 
     dataType: "json", 
     success: function (data) { 
      //here success 
      }, 
     cache: false, 
     contentType: false, 
     processData: false 
     }); 
    } 

    $("#loginForm").submit(function(){ 
     return false; 
    }) 
}); 
0

使用此

$("#loginForm").serialize() 

,而不是

$("#loginForm:input").serializeArray() 
0

你必須使用

$.post(
     $("#loginForm").attr("action"), 
     $("#loginForm:input").serialize(), 
     function(data){ 
      $("div#msg").html(data); 
     }