2013-06-22 4 views
0

У меня есть страница для входа. Когда я ввожу правильные данные входа в систему ajax. Но когда я ввожу плохой логин или пароль, скрипт не возвращает ошибку. Как я могу это исправить, где я ошибаюсь в коде? Ajax скриптAjax fail no response

function getdetails() 
{ 
    var name = $('#user').val(); 
    var haslo = $('#pass').val(); 
    var request=$.ajax 
    ({ 
     type: "POST", 
     url: "login.php?id=0", 
     data: {login:name, pass:haslo} 
    }); 
    request.fail(function() { 
    alert("test"); 
    }); 
    request.done(function() { 
    $('#logowanie').load('index.php #logowanie'); 
    }); 

}; 

Код формы

function logowanie() 
{ 
    if(isset($_SESSION["login"]) && $_SESSION["login"]!==0) 
    { 
     echo '<div id="logowanie"> Witaj '.$_SESSION['nick'].' na forum'; 
     echo '<br/><a href="login.php?off=1">Wyloguj</a><br/>'; 
     if($_SESSION['power']>0) 
      {echo '<a href="panel.php">Panel Admina</a>';}  
     echo '</div>'; 
    } 
    else 
    { 
     $_SESSION["login"]=0; 
     $_SESSION['power']=0; 
     ?> 
     <div id="logowanie"> 
     <font color="red"><B> Login</B></font><input type="text" name="user" size="8" id="user"><br/> 
     <B><font color="red">Hasło</font></B><input type="password" name="pass" size="8" id="pass"><br/> 
     <input type="submit" value="Zaloguj" name="przycisk" onClick ="getdetails()">Jeżeli nie posiadasz jeszcze konta <a href="login.php?id=1">zarejestruj się </a></div>'<?php 
    } 
} 

форма проверки

function werfikuj(){ 
$login=$_POST['login']; 
$haslo=$_POST['pass']; 
$zapytanie= 'Select * from users where login="'.$login.'" and haslo="'.md5($haslo).'"'; 
$result = $this->db->query($zapytanie); 
if($result->num_rows==1) { echo "Zalogowano poprawnie";$row = $result->fetch_assoc(); $_SESSION['login']=$row['id']; $_SESSION['nick']=$row['login']; $_SESSION['power']=$row['power'];} 
else { die(json_encode('zly login lub haslo'));} 


} 

Thx за помощью.

+0

Вы должны попробовать передать переменную 'id' как часть объекта данных. – Terry

+0

Можете ли вы взять пример. Я не сейчас, что вы имеете в виду? – set4812

+0

Используйте 'url:" login.php ", а затем' data: {login: name, pass: haslo, id: 0} ' – Terry

ответ

-1

Ajax не знает, что вы хотите показать ошибку, для вызова ajax, ваше сообщение «Zalogowano poprawnie» и закодированное сообщение «zly login lub haslo» не имеет никакого значения для меня (я не знаю вашего языка) , Если вы хотите сказать ajax, это ошибка, вам нужно ответить с другим кодом ответа HTTP. метод «сбой» - это вызов только тогда, когда есть ответ об ошибке HTTP.

Если вы используете PHP5,

echo json_encode('zly login lub haslo'); 
http_response_code(404); 
exit(); 

Кстати, я не знаю ваши намерения в использовании json_encode. Возможно, это не решит вашу проблему. Но я верю, что он отвечает, почему вы не получаете «ошибку»

В качестве альтернативы вы всегда можете вернуть сообщение «ok» или «failed». Ajax всегда будет вызывать метод «done». Внутри метода «done» вы запускаете разные действия в соответствии с сообщением («ok» или «failed»)

+0

Если он не использует буферизацию вывода (кажется вероятным), код ответа не будет установлен, если некоторый выход уже сгенерирован. – Cthulhu

+0

Он хочет сказать, что есть ошибка, возвращая сообщение. То, что я пытаюсь объяснить, - это возврат сообщения не вызовет обработчик «fail», он всегда будет вызывать обработчик «done», потому что «fail/done» является базовым для кода ответа. – DavidLin