@arturka_v_10

Как обработать ответ ajax запроса?

В общем есть у меня скрипт входа на сайт:

spoiler

$(function() {

  // ----------- animate toast #hum
  
    function info_show(){
    $("#toast-container")
      .delay(3000)
      .fadeOut(500, function(){ // on complete
          $("#hum").html('');
      });
  }
  
  // ----------- admin
  
    $('#RichLogin').click(function(e) {
  
    e.preventDefault();
    var $data;
    $data = $('#manager_log').serialize();
	
    $.ajax({
      url: "/ajax/manager.php?p=1",
      type: 'post',
      data: $data,
      success: function(result) {
        $('#hum').html(result);
		
		info_show();
		
        setTimeout('location.replace("/adminka")',4500);
      }
    })
  });
  
  // -----------  

});


Вот куда запрос идет

spoiler

<?
session_start();
header("Content-type: text/html; charset=utf-8");
include("../inc/cfg.php");
include("../inc/func.php");

$p = intval($_GET["p"]);
$em_ses = $_SESSION["email"];


//--------------------------------- вход в админку
if($p == "1"){

	$login=$_POST["login"];
	$pass=$_POST["pass"];
	
if(!empty($login) AND !empty($pass)){
if($login == "123" AND $pass == "123")
    {
	
$_SESSION['user'] = $login;
$_SESSION['admin'] = "Admin";
echo success("Успешная авторизация");

	} else echo error("Данные неверны");
	} else echo error("Поля не заполнены");
}



Как при ответе (неверные данные) не делать реддиректа. А при удачном - переадресовывать.
  • Вопрос задан
  • 256 просмотров
Решения вопроса 1
@arturka_v_10 Автор вопроса
сделал так:

JS ajax
$(function() {

  // ----------- animate toast #hum
  
    function info_show(){
    $("#toast-container")
      .delay(3000)
      .fadeOut(500, function(){ // on complete
          $("#hum").html('');
      });
  }
  
  // ----------- admin

  $('#RichLogin').click(function(e) {
    e.preventDefault();

  $.ajax({
  type: 'post',
  url: '/ajax/manager.php?p=1',
  data: $('#manager_log').serialize(),
  success: success,
  dataType: "json",
  async:false
  });

function success( castData ) {
$result = castData.result;
$status = castData.status;
$('#hum').html($result);
}
    
	info_show();
	
	if($status == "OK"){
	setTimeout('location.replace("/adminka")',2500);
	}
  });
  
  // -----------  

});
обработчик запроса
//--------------------------------- вход в админку
if($p == "1"){
				
	$login=$_POST["login"];
	$pass=$_POST["pass"];
	
if(!empty($login) AND !empty($pass)){
if($login == "123" AND $pass == "123")
    {
	
$_SESSION['user'] = $login;
$_SESSION['admin'] = "Admin";

echo request($p,1,"Успешная авторизация");

	} else echo request($p,2,"Данные введены неверно");
	} else echo request($p,2,"Поля не заполнены");
}
request функция
// функция json ответа
function request($type,$ident,$text){

if($ident == "1"){
$result = success($text);
$status = "OK";
}else{
$result = error($text);
$status = "ERR";
}

$arrInfo = array(
                'status' => $status,
				'ident' => $ident,
				'result' => $result,
	            'key' => $type
				);
return json_encode($arrInfo);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
heksen
@heksen
Можете использовать такой класс:
<?php
class msg
{
 static function error( $string )
 {
  $arr = array('answer' => 'error', 'string' => $string);
  echo json_encode($arr);
  exit;
 }
 static function success( $string )
 {
  $arr = array('answer' => 'success', 'string' => $string);
  echo json_encode($arr);
  exit;  
 }	
 static function warning( $string )
 {
  $arr = array('answer' => 'warning', 'string' => $string);
  echo json_encode($arr);
  exit;  
 }	
}
?>


И в ответе писать что-то типа:
return msg::success("редирект");
return msg::warning("без редиректа");

А на клиенте так:

$.ajax
({
      url: "/ajax/manager.php?p=1",
      type: 'post',
      data: $data,
      success: function(result) 
      {
          var obj = jQuery.parseJSON(data);
          switch(obj.answer)
	 {				
			case "error": error(obj.string); break;
			case "warning":  /* без редиректа */ break;
			case "success": {		
				// здесь редирект
			}
                } 
      }
    });
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы