2015-08-08 41 views
0

我得到一个失败对象对象的通知。我看了很多例子,仍然无法弄清楚错误。我相信我的AJAX设置不正确。 PHP应该很好,我有一个本地数据库,并使用jQuery和AJAX来处理请求和响应。该页面应该重定向到dashboard.php当我有成功在登录jQuery AJAX php登录不正确传递数据

这里是形式:

<div class="row"> 
      <div class="col-xs-12 text-center"> 
       <h1 class="text_white bad_login"> 
        Log In Please 
       </h1> 
      </div> 
      <div class="col-xs-12 col-sm-4 col-sm-offset-4"> 
       <form class="text_white" method="post" action="/login.php"> 
        <div class="form-group"> 
         <label for="username">User Name:</label> 
         <input name="username" type="text" class="form-control" id="username" placeholder="User Name"> 
        </div> 
        <div class="form-group"> 
         <label for="password">Password:</label> 
         <input name="password" type="password" class="form-control" id="password" placeholder="Password"> 
        </div> 
        <button type="submit" class="btn btn-default" id="login" name="login">Log In</button> 
       </form> 
      </div> 
     </div> 

这里是PHP:

if($_SERVER["REQUEST_METHOD"] == "POST") 
{ 

     // grab form fields and save as php variables 
     $username = ''; 
     $password = ''; 

//  if (isset($_POST['name'], $_POST['passphrase'])){ 
//   $username = $_POST['name']; 
//   echo $username; 
//    
//   $password = $_POST['pass']; 
//   echo $password; 
//  } 
//  else { 
//   $username = null; 
//   $password = null; 
//  } 

     if (isset($_POST['password'])){ 
      $password = $_POST['password']; 
      //echo $password; 
     } 
     else { 
      $password = null; 
     } 

     if (isset($_POST['username'])){ 
      $username = $_POST['username']; 
      //echo $username; 
     } 
     else { 
      $username = null; 
     } 

     // create query to run on database 
     $qry = "SELECT username, password FROM user WHERE username='".$username. "' AND password='".$password. "' "; 


     $result = mysqli_query($conn, $qry) or die(mysqli_error($conn)); 
     $num_row = mysqli_num_rows($result); 
     $row = mysqli_fetch_assoc($result); 

     // check to see if it is only 1 match and then save that information to the session for later use 
     if($num_row == 1) { 
      $_SESSION['username'] = $row['username']; 
      //echo $_SESSION['username']; 

      $_SESSION['password'] = $row['password']; 
      //echo $_SESSION['password']; 
     } 
     else { 
      echo ' FALSE! '; 
     } 

//  $result->json_encode($result); 
     echo json_encode($result); 
    } 

//close the connection 
$conn->close(); 

这里是AJAX这我相信包含错误:

//jQuery(document).ready(function($){ 
// $('#login').click(function(event){ 
//  event.preventDefault(); 
//  var username = $('#username').val(); 
//  var password = $('#password').val(); 
//  
//  if ($('#username').val() === '' || $('#password').val() === '') { 
//   $('.bad_login').text('PLEASE ENTER BOTH USERNAME AND PASSWORD'); 
//  } 
//  
//  $.ajax({ 
//   type: 'POST', 
//   url: '/ChurchCheckIn/login.php', 
//   dataType: 'json', 
//   data: 'username='+username+'&password='+password, 
////   data: { username : username, password : password}, 
//   success: function(data){ 
////    if(data === 'true') { 
//     window.location='/ChurchCheckIn/dashboard.php'; 
//     console.log('if true.... ' + data); 
////    } 
////    else { 
////     $('.bad_login').text('WRONG USERNAME OR PASSWORD TRY AGAIN PLEASE...'); 
////     console.log('bad html test for other stuff' + data); 
////    } 
//   }, 
////    fail: function(data){ 
////     jQuery.parseJSON(data); 
////     console.log('failure' + data); 
////     $('.bad_login').text('WRONG USERNAME OR PASSWORD TRY AGAIN PLEASE...'); 
////    }, 
////    done: function() { 
////     console.log('success' + data); 
////     window.location='/ChurchCheckIn/dashboard.php'; 
////    }, 
//   beforeSend:function() { 
//    $('.bad_login').text('Loading....'); 
//   } 
//  }); 
//  return false; 
// }); 
//}); 

jQuery(document).ready(function ($) { 
    $('#login').click(function (event) { 
     event.preventDefault(); 
     var username = $('#username').val(); 
     var password = $('#password').val(); 
     var response = {}; 

     if ($('#username').val() === '' || $('#password').val() === '') { 
      $('.bad_login').text('PLEASE ENTER BOTH USERNAME AND PASSWORD'); 
     } 

     var request = $.ajax({ 
      url: '/ChurchCheckIn/login.php', 
      type: 'POST', 
      data: 'username='+username+'&password='+password, 
      dataType: 'json' 
     }); 

     request.done(function (data) { 
      response = $.parseJSON(data); 
      console.log(response); 
      if (response.success == 'true') { 
       console.log('success' + data); 
       window.location = '/ChurchCheckIn/dashboard.php'; 
      } else { 
       console.log('data came back false'); 
      } 
     }); 

     request.fail(function (data) { 
      console.log('failure' + data); 
      $('.bad_login').text('WRONG USERNAME OR PASSWORD TRY AGAIN PLEASE...'); 
     }); 

    }); 

}); 

我已经尝试了多种方式,我相信一个发送对象和另一个希望收到一个字符串。我不相信我是偏离基地,我甚至确保使用最新的做法。 mysqli在我的PHP和新的成功与我的jQuery形式。

+1

我看到您的JavaScript代码存在问题。它全部被注释掉了。请按照本文中的建议来隔离您的问题。 [mcve] –

+0

需要更多地隔离您的问题。检查浏览器开发工具网络中的实际请求,看看什么是预期的并查看返回的内容(如果有的话) – charlietfl

+0

回声都是混乱的。无法回显文本和JSON,也不会发送查询对象 – charlietfl

回答

1

尝试使用数据作为Javascript对象

var request = $.ajax({ 
     url: '/ChurchCheckIn/login.php', 
     type: 'POST', 
     data: {username: username, password: password} 
     dataType: 'json' 
    }); 

,如果没有工作,用JSON.stringify围绕数据对象,但它应该工作,因为jQuery转换数据自动对象。

1

我相信在一排:

if (response.success == 'true') { 
 
}

没有元素success尝试检查,如果响应变量是不是空的。