如何在Ajax请求后过滤服务器的回应响应

时间:2015-08-23 17:23:23

标签: javascript php jquery html ajax

好吧,这次我试图验证尝试登录系统的用户类型。关键是我使用AJAX将值从输入发送到PHP文件而不是验证这些值。我希望从该PHP文件获得一个可能是id_type_user的值(如果登录值成功)或者#34; 0" (如果登录值错误)或100(如果出现SESSION var的任何类型的错误),而不是获得这3个值中的一个。我将HTML内容作为服务器的响应,因此我不知道如何过滤。我只做回声,这是我唯一需要的东西。

以下是我index.php的JavaScript函数:

$(document).ready(function(){
    $('#boton-entrar').click(function(e){
        if ( $('#nombreUsuario').val() != "" && $('#contrasenaUsuario').val() != "" ){
                $.ajax({
                    type: 'POST',
                    url: 'php/login.ajax.php',
                    dataType: 'text',
                    data: 'nombreUsuario=' + $('#nombreUsuario').val().trim() + '&contrasenaUsuario=' + $('#contrasenaUsuario').val().trim(),
                    success: function(msj){
                        switch (msj) {
                            case "0":
                                    alert("Usuario o Contraseña Invalida, verifique e intente nuevamente");
                                    $(".form-horizontal").reset();
                                    break;
                            case "1":
                                    $("#wrapper").load("adminIndex.php");
                                    break;
                            case "2":
                                    $("#wrapper").load("medicoIndex.php");
                                    break;
                            case "3":
                                    $("#wrapper").load("pacienteIndex.php");
                                    break;
                            case "100":
                                    alert("Error de Session, Ya se encuentra una sesion Activa");
                                    break;
                            default:
                                    alert(msj);
                        }
                    },
                    error:function(){
                        alert("Error al intentar logear");
                    }
                });
        }else{
            alert("Debe llenar los campos para poder ingresar");
        }
        e.preventDefault();
    });
});

这是PHP文件的代码,我通过AJAX(login.ajax.php)发送数据:

<?php

include("conexion.php");
session_start();

// No hay sesión aún
if( !isset($_SESSION['NombreDeUsuario']) && !isset($_SESSION['CedulaDeUsuario']) ){

    //md5(md5($_POST['login_userpass'])); INVESTIGAR

    $query = "SELECT nombre_usuario,nombre,apellido,cedula,fk_tipologia_de_usuario,ultima_fecha_ingreso FROM usuarios,personas WHERE usuarios.nombre_usuario = '".$_POST['nombreUsuario']."' AND usuarios.clave_usuario = '".$_POST['contrasenaUsuario']."' AND personas.fk_usuario = usuarios.nombre_usuario ";
    $consulta = pg_query($query);

//MEJORAR
    $contador = 0;
    $resultado;
    while($row = pg_fetch_array($consulta)){
        $contador++;
        $resultado = $row;  
    }
//

    if($contador == 1){
        $_SESSION['NombreDeUsuario'] = $resultado['nombre_usuario'];
        $_SESSION['NombrePersona'] = $resultado['nombre'];
        $_SESSION['NombrePersona'] .= " ".$resultado['apellido'];
        $_SESSION['CedulaDeUsuario'] = $resultado['cedula'];
        $_SESSION['tipo_usuario_sesion'] = $resultado['fk_tipologia_de_usuario'];
        $_SESSION['ultima_fecha_ingreso'] = $resultado['ultima_fecha_ingreso'];
        pg_query("UPDATE usuarios SET(ultima_fecha_ingreso='NOW()')");
        echo  $resultado['fk_tipologia_de_usuario'];
    }
    else{
        echo 0; 
    }           

}else{
    echo 100;
}  ?>

这是我从服务器回来的消息

CONEXION EXITOSA<br />
<font size='1'><table class='xdebug-error' dir='ltr' border='1'        cellspacing='0' cellpadding='1'>
<tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span> Warning: pg_query() [<a href='function.pg-query'>function.pg-query</a>]: No PostgreSQL link opened yet in C:\wamp\www\GestionCitas\php\login.ajax.php on line <i>12</i></th></tr>
<tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
<tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0174</td><td bgcolor='#eeeeec' align='right'>374936</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\GestionCitas\php\login.ajax.php' bgcolor='#eeeeec'>..\login.ajax.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0386</td><td bgcolor='#eeeeec' align='right'>384672</td><td bgcolor='#eeeeec'><a href='http://www.php.net/pg_query' target='_new'>pg_query</a>
(  )</td><td title='C:\wamp\www\GestionCitas\php\login.ajax.php' bgcolor='#eeeeec'>..\login.ajax.php<b>:</b>12</td></tr>
</table></font>
 <br />
 <font size='1'><table class='xdebug-error' dir='ltr' border='1' cellspacing='0' cellpadding='1'>
 <tr><th align='left' bgcolor='#f57900' colspan="5"><span style='background-color: #cc0000; color: #fce94f; font-size: x-large;'>( ! )</span>                 Warning: pg_fetch_array() expects parameter 1 to be resource, boolean given in C:\wamp\www\GestionCitas\php\login.ajax.php on line <i>17</i></th></tr>
 <tr><th align='left' bgcolor='#e9b96e' colspan='5'>Call Stack</th></tr>
 <tr><th align='center' bgcolor='#eeeeec'>#</th><th align='left' bgcolor='#eeeeec'>Time</th><th align='left' bgcolor='#eeeeec'>Memory</th><th align='left' bgcolor='#eeeeec'>Function</th><th align='left' bgcolor='#eeeeec'>Location</th></tr>
<tr><td bgcolor='#eeeeec' align='center'>1</td><td bgcolor='#eeeeec' align='center'>0.0174</td><td bgcolor='#eeeeec' align='right'>374936</td><td bgcolor='#eeeeec'>{main}(  )</td><td title='C:\wamp\www\GestionCitas\php\login.ajax.php' bgcolor='#eeeeec'>..\login.ajax.php<b>:</b>0</td></tr>
<tr><td bgcolor='#eeeeec' align='center'>2</td><td bgcolor='#eeeeec' align='center'>0.0390</td><td bgcolor='#eeeeec' align='right'>385040</td><td bgcolor='#eeeeec'><a href='http://www.php.net/pg_fetch_array' target='_new'>pg_fetch_array</a>
(  )</td><td title='C:\wamp\www\GestionCitas\php\login.ajax.php' bgcolor='#eeeeec'>..\login.ajax.php<b>:</b>17</td></tr>
</table></font>
0

我现在已经知道来自哪里,最后是0,这就是我想要抓住的价值。

先谢谢你

1 个答案:

答案 0 :(得分:1)

正如所写:

  

警告:pg_fetch_array()要求参数1为资源,布尔值在第17行的C:\ wamp \ www \ GestionCitas \ php \ login.ajax.php中给出

这表示错误发生在第17行,并且您没有正确获取 pg_query($ query)返回的数据。

在调用 pg_fetch_array()函数之前,您必须检查 $ consulta 变量。见documentation。该函数仅接受资源(无布尔值)作为参数1。

使用mysqli_num_rows

如果返回0,则返回0,否则仅获取找到的行并使用会话处理所有内容。