2015-09-29 6 views
-1

Я пытаюсь получить доступ к моей базе данных. Но мой вызов AJAX продолжает работать с функцией ошибки вместо успеха, и я боюсь понять, почему.AJAX работает функция ошибки, а не функция успеха

function doLogin() { 
    var formData = ConvertFormToJSON("#login-form"); 
    console.log('login data to send: ', formData); 

    $.ajax({ 
     url: 'php/login-session.php', 
     type: 'POST', 
     dataType: 'JSON', 
     data: formData, 
     success: function(logindata) { 
      console.log('login data returned: ', logindata); 

      var status = logindata['status']; 
      if(status == "fail"){ 
       $("#loginerror").html(logindata['msg']); 
       $("#loginerror").cs('display', 'block'); 
      } else { 
       getUserProfileInfo(); 
       $("login-form").trigger('reset'); 
      } 
     }, 
     error: function(jqXHR, textStatus, errorThrown){ 
      console.log(jqXHR.statusText, textStatus); 
     } 
    }); 
} 

Консоль журналы:

входа в систему данные для отправки: Object {loginusername: "тест", loginpassword: "тест"}

OK parsererror

Мой Войти -session.php:

<?php 

if (session_status() == PHP_SESSION_NONE) { 
    session_start(); 
} 

$DBhost = 'localhost'; 
$DBuser = 'root'; 
$DBpass = 'root'; 
$DBname = 'anamadeus'; 

$methodType = $_SERVER['REQUEST_METHOD']; 
$data = array('status' => 'fail', 'msg' => '$methodType'); 

if($methodType === 'POST'){ 
    //Check AJAX 
    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 

     if(isset($_POST['loginusername']) && !empty($_POST['loginusername']) && isset($_POST["loginpassword"]) && !empty($_POST["loginpassword"])){ 

      // get the data from the post and store in variables 
      $username = $_POST["loginusername"]; 
      $password = $_POST["loginpassword"]; 

      try { 
       $conn = new PDO('mysql:host=$DBhost;dbname=$DBname', $DBuser, $DBpass); 
       $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

       $sql = 'SELECT * FROM user WHERE username = :log AND password = :pwd'; 

       $statement = $conn->prepare($sql); 
       $statement->execute(array(":log" => $username, ":pwd" => $password)); 

       // this should be one if there's a user by that user value and password value 
       $count = $statement->rowCount(); 

       if($count > 0){ 
        $rows = $statement->fetchAll(PDO::FETCH_ASSOC); 
        $returnedUsername = $rows[0]['username']; 
        $returnedPassword = $rows[0]['password']; 

        $_SESSION['username'] = $returnedUsername; 
        $_SESSION['loggedin'] = true; 

        $sid=session_id(); 
        $data = array("status" => "success", "sid" => $sid); 
       } else { 
        $data = array("status" => "fail", "msg" => "User name and/or password not correct."); 
       } 
      } catch(PDOException $e) { 
       $data = array("status" => "fail", "msg" => $e->getMessage()); 
      } 

     } else { 
      $data = array("status" => "fail", "msg" => "Either login or password were absent."); 
     } 

    } else { 
     // not AJAX 
     $data = array("status" => "fail", "msg" => "Has to be an AJAX call."); 
    } 
} else { 
    // simple error message, only taking POST requests 
    $data = array("status" => "fail", "msg" => "Error: only POST allowed."); 
} 

echo json_encode($data, JSON_FORCE_OBJECT); 

?> 

Пожалуйста, помогите мне.

Я бег своей базы данных и PHP на MAMP

+0

Вы уверены, что не получите недействительный JSON? – Pointy

+1

функция успеха запускается, когда код состояния HTTP находится в '2xx' (например,' 200' или '201'), дважды проверьте статус ответа HTTP на вкладке сети консоли вашего веб-браузера –

+0

' parse error' - независимо от того, сервер отправляет обратно IS NOT json. например php warning/error получил встроенный до/после json-контента, что делает его незаконным json. –

ответ

0

Epascarello был правильный ответ, я должен был изменить одинарные кавычки в двойные кавычки.

Смежные вопросы