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.