2014-09-11 6 views
0

Я пытаюсь получить форму входа для обработки с помощью AJAX. URL-адрес php запускается, и пользователь входит в систему, но условие успеха вызова AJAX не выполняется и не завершается. Когда я устанавливаю точки останова внутри функций, которые он не прерывает, когда я его отлаживаю. Почему успех php, но успех даже не запущен?AJAX json преуспевает, но успех не запускается

JQuery AJAX

$(document).ready(function(){ 
$('#login-button').click(function(){ 
    var dbg = $('#auth-form').serialize()+'&action=login'; 
    $.ajax({ 
     url: 'auth.php', 
     data: $('#auth-form').serialize()+'&action=login', 
     type: "POST", 
     dataType: "json", 
     success: function(data) { 
      console.log(data); 
      $("#login-message").html("test"); 
      if(data['auth'] == 'valid'){ 
       $("#login-message").html(data['msg']); 
       //setTimeout(redirect(), 2000); 
      }else if(data['auth'] == 'invalid'){ 
       $("#login-message").html(data['msg']); 
      } 
     }, 
     complete: function(data){ 
      var d = $.parseJSON(data); 
      console.log(d); 
     } 
    }); 
    return e.preventDefault(); 
}); 
}); 

PHP

<?php 
session_start(); 
require_once("model.php"); 
$model = new model(); 
extract($_POST); 
var_dump($_POST); 

if(isset($action)) 
{ 
    if($action == 'login'){ 
     if($model->authenticate($id, $password)){ 
      //run authenticate function to authenticate user in db 
      $_SESSION['id']=$id; 
      $return["auth"]="valid"; 
      $return["msg"]="<font color='green'>You have successfully logged in.\r\n You are being redirected...</font>"; 
      //redirect to new page 
      echo json_encode($return); 
     }else{ 
      //login incorrect 
      $return["auth"]="invalid"; 
      $return["msg"]="<font color='red'>ID or Password incorrect</font>"; 
      echo json_encode($return); 
     } 

    }else if($action == 'logout'){ 

    } 
} 

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

+0

Как вы узнаете, успешно ли это, если точки останова не срабатывают? Вы пытались использовать инспектор, чтобы посмотреть запрос AJAX? –

+0

Потому что я могу перейти на страницу, и он скажет мне, что я вошел в систему –

+0

Итак, после того, как логин или нет, '' login-message' заполняется текстом 'test'? – 2014-09-22 10:44:20

ответ

0

Вы должны вернуть json, потому что ваш dataType - json, иначе успех не будет огнем.

Вам нужно добавить заголовок в свой php-скрипт. Пример:

header("Content-type: application/json"); 
+0

Это не так: echo json_encode ($ return) означает im return json? –

+0

Нет, для этого требуется тип контента, которому я верю. Я мог бы проверить, хотите ли вы. –

+0

Я добавил заголовок в начало php-скрипта, но он все еще не работает –

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