2013-12-15 2 views
0

Im пытаются использовать Ajax для отправки формы и возврата типа бизнеса или Администратора, но я получаю:Im пытается создать класс для входа, но мой Аякса JSON синтаксический не получает правильный ответ

JSON. parse: неожиданный конец данных

результат = JSON.parse (r);

<input type="text" id="signinemail" placeholder="Email" name="signinemail"> 

<input type="password" id="signinpassword" placeholder="Password" 
name="signinpassword"> 

<script> 

    $(function() { 

    $("#signinsubmit").click(function() { 

     var username = $("#signinemail").val(); 

     $.post("signin.php", 
     { 

     signinusername: username, signinpassword: $("#signinpassword").val() 
     } ) 

     .done(function(r) 
     { 

     result= JSON.parse(r); 

     if(result["user_type"]=="Business") 

     { 

      window.location="profile.php"; 
     } 

     else if(result["user_type"]=="Admin") 

     { 

      window.location="requestpage.php"; 

     } 

     }); 

     }); 

     }); 

</script> 

Это класс, который пытается войти в систему. Это Firsts занимает пост дает ему функции AUTHENTICATE затем возвращает результат подключения к журналу в функции, которая кодирует его

<?php 

/** 
* Logs the User into Website 
*/ 
class Login 
{ 

    private $connection; 
    private $result_array = array(); 
    private $user_type; 
    private $id; 
    public $username; 
    private $password; 
    public $loggedIn; 

    function __construct() 
    { 
     $this->username = $_POST['signinemail']; 
     $this->password = $_POST['signinpassword']; 
     $this->connection = new mysqli('WolfeboroC.db.10688096.hostedresource.com', 'WolfeboroC', 'Brewster#1', 'WolfeboroC'); 
     $this->authenticate(); 
     $this->logIn($this->authenticate); 
    } 

    private function authenticate() 
    { 

     $query = "SELECT recid, Admin FROM users 
        WHERE User = '".$this->$username."' 
        AND password='".$this->$password."' 
        AND (verified='y' OR admin = 'y') 
        LIMIT 1"; 

     $stmt = mysqli_master_query($this->connection, $query); 

     $this->result_array = mysqli_fetch_array($stmt); 

     return !empty($this->result_array); 

    } 


private function logIn() 
{ 

    if($result_array->num_rows > 0) 
    { 

     if($result_array['Admin']=='y') 
     { 

      $this->user_type = "Admin"; 
      $this->admin($this->result_array); 
      $this->loggedIn = true; 
     } 

     else 
     { 

      $this->user_type = "Business"; 
      $this->business($this->result_array); 
      $this->loggedIn = true; 
     } 

     echo json_encode($this->user_type['user_type']); 
    } 

} 

} 

?> 
+0

Так что передается от сервера к клиенту? Первый шаг: затухать дамп на стороне сервера или использовать консоль отладки внутри вашего clilent (браузер). – arkascha

+0

Тип Бизнес или Администратор – user2872510

+0

Это не ответ. Я спросил, что действительно отправлено с сервера на клиент. Отправлено буквально. Визуализируйте полезную нагрузку. – arkascha

ответ

1

эхо json_encode ($ this-> user_type [ «user_type»]); не является правильным. Ваш user_type не является массивом, поэтому не пытайтесь получить к нему доступ так. Вы либо сделать> user_type эхо $ this- и использовать результат в виде строки в JavaScript или положить значение в массиве, а затем json_encode это следующим образом:

echo json_encode(array('user_type' => $this->user_type)); 
0

Попробуйте использовать, чтобы получить ответ как JSon,

result.user_type 

вместо

result["user_type"] 

логин() функция: synatx JSON должен быть

echo json_encode(array('user_type' => $this->user_type)); 

вместо,

echo json_encode($this->user_type['user_type']); 
+0

я все еще получаю ту же ошибку – user2872510

+0

Вы можете оставить ответ JSon здесь –

+0

SyntaxError: JSON.parse: неожиданный конец данных \t результат = JSON.parse (г); – user2872510

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