Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/11/2012, 10:26
Dracknes
 
Fecha de Ingreso: abril-2011
Mensajes: 23
Antigüedad: 13 años, 7 meses
Puntos: 2
Google Chrome no me ejecuta bien Ajax.

Buenas, tengo un problemita con ajax y chrome.

A ver, os cuento.

Estoy con un login mediante ajax.

Para loguear hago lo siguiente:

Llamo a esta funcion:

Código:
function loguear(){
	var xmlhttp;
	
	var user = $(document.getElementById("user")).val();
	var pass = $(document.getElementById("pass")).val();
	if(window.XMLHttpRequest){
		xmlHttp = new XMLHttpRequest();
	}else{
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	xmlHttp.onreadystatechange=function(){
		if(xmlHttp.readyState==4){
			alert(xmlHttp.responseText);
			if(xmlHttp.responseText==true){
				/*$(document.getElementById("form_login")).hide(500,function(){
					$(document.getElementById("chat")).show("slow");
				});*/
				var selectedEffect = "clip";
				var options = {};
				$("#form_login").effect("explode", options, 500, function(){
					$(document.getElementById("chat")).show(selectedEffect, options, 500);
				});					
			}else{
				var selectedEffect = "shake";
				var options = {};
				$("#form_login").effect(selectedEffect, options, 500);
			}
		}						
	}
	//xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttp.open("GET","php/sesion/conexion.php?accion=logueo&user="+user+"&pass="+pass,true);		
	xmlHttp.send();	
}
Funciona perfecto, llama al archivo conexion.php y le paso un parámetro que es "accion" que es el que luego usaré para llamar a una función. Os pongo el php mejor y lo veis bien:

Código PHP:
<?php
    
    
//Sesion
    
session_start();

    
//$_SESSION['id_usuario'];
    
    //Conexion MYSQL LOCAL
    
$user 'Dracknes';
    
$pass 'toor';
    
$servidor 'localhost';
    
$bbdd 'chats';
    
    
//Conexion MYSQL REMOTO
    /*$conexion;
    $user;
    $pass;
    $servidor;
    $bbdd;*/
    
    //Conectar
    
$conexion mysql_connect($servidor$user $pass) or die (mysql_error());
    
    
//Seleccionar la BD a utilizar
    
mysql_select_db($bbdd$conexion) or die (mysql_error());
    
    function 
logueo(){
        
//Obtenemos user y pass
        
$usuario utf8_decode($_GET['user']);
        
$contrasena utf8_decode($_GET['pass']);
        
        
//Realizamos la consulta y la ejecutamos
        
$query "SELECT count(*) cuenta, id_usuario, usuario FROM USUARIOS WHERE usuario = '".$usuario."' and contrasena = '".$contrasena."'";
        
$comprobacion mysql_query($query$GLOBALS['conexion']) or die(mysql_error());
        
        
$ejecucion mysql_fetch_array($comprobacion) or die(mysql_error());
        if(
$ejecucion['cuenta']==1){
            
$_SESSION['id_usuario'] = $ejecucion['id_usuario'];
            echo 
true//Si existe
        
}else{
            echo 
false//Si no existe
        
}
    }
    
    function 
deslogueo(){        
        
//Destruimos la session
        //session_start();
        //session_destroy();
        
echo true;
        
    }
    
    function 
obtenerDatos(){
        
$query "SELECT mensaje FROM MENSAJES ORDER BY id_mensaje DESC LIMIT 10";
        
$comprobacion mysql_query($query$GLOBALS['conexion']) or die(mysql_error());
        
        while(
$ejecucion mysql_fetch_array($comprobacion)){
            echo 
'<p>'.$ejecucion['mensaje'].'</p>';
        };        
    }
    
    function 
insertarDatos(){
        
$query "INSERT INTO MENSAJES (MENSAJE, ID_USUARIO) VALUES('".$_GET['texto']."', ".$_SESSION['id_usuario'].")";
        
$comprobacion mysql_query($query$GLOBALS['conexion']) or die(mysql_error());
        echo 
'<p>'.$_GET['texto'].'</p>';                    
    }
    
    if(isset(
$_GET['accion']) && $_GET['accion']=="logueo"){
        
logueo();
    }else if (isset(
$_GET['accion']) && $_GET['accion'] == "obtenerDatos"){
        
obtenerDatos();
    }else if (isset(
$_GET['accion']) && $_GET['accion'] == "insertarDatos"){
        
insertarDatos();
    }else if (isset(
$_GET['accion']) && $_GET['accion'] == "deslogueo"){
        
deslogueo();
    }
    

    
?>
Como veis al final llamo a las funciones. Bien,a hora el problema.

Tengo otra funcion que llama al php para desloquear que es la siguiente:

Código:
function desloguear(){
	var xmlhttp2;	
	if(window.XMLHttpRequest){
		xmlHttp2 = new XMLHttpRequest();
	}else{
		xmlHttp2 = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	xmlHttp2.onreadystatechange=function(){		
		if(xmlHttp2.readyState==4){
			if(xmlHttp2.responseText==true){
				alert(xmlHttp2.responseText);			
								
			}
		}						
	}
	//xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlHttp2.open("GET","php/sesion/conexion.php?accion=deslogueo",true);		
	xmlHttp2.send();	
}
Este, en firefox funciona perfecto, me llama a la función y me devuelve 1 (que es true). Pero en chrome me devuelve una cadena vacia, con lo cual es como si no llamase a la funcion, lo cual me ralla, porque el codigo es el mismo.

Alguna posible solucion? Tiene que ver que esté en localhost?

Un saludo.