Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problemas con AJAX en Mozilla ( y Safari )

Estas en el tema de Problemas con AJAX en Mozilla ( y Safari ) en el foro de Frameworks JS en Foros del Web. Hola a todos! Hago uan llamada a un JS. Este JS, ejecuta un procedimiento vía AJAX. Este procedimiento no es más que una llamada a ...
  #1 (permalink)  
Antiguo 03/07/2011, 10:41
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 10 meses
Puntos: 4
Problemas con AJAX en Mozilla ( y Safari )

Hola a todos! Hago uan llamada a un JS. Este JS, ejecuta un procedimiento vía AJAX. Este procedimiento no es más que una llamada a un PHP. Este PHP modifica el valor de uan variable de sesión. Es decir, mediante una llamada JS, actualizo el valor de uan variable de sesión. En IE, Operay Google Chrome funciona bien. En Mozilla y Safari, no. Las tres partes implicadas son:

--------------------------------------------------------------------------------------------------
-------------------------- CREA EL OBJETO AJAX ----------------------------------------
--------------------------------------------------------------------------------------------------

function fun_nuevo_ajax()
{
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
lo que se puede copiar tal como esta aqui */
var xmlhttp=false;
try
{
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
// Creacion del objeto AJAX para IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }

return xmlhttp;
}

--------------------------------------------------------------------------------------------------
------------------------ FUNCIÓN JS QUE CREA EL OBJETO AJAX ----------------------
--------------------------------------------------------------------------------------------------

function fun_accion_semaforo()
{
var v_ajax = fun_nuevo_ajax();

// uso del medoto GET.
v_ajax.open("GET", "./php_accion_boton.php");

//como hacemos uso del metodo GET colocamos null
v_ajax.send(null);
}
<?
session_start();
?>

--------------------------------------------------------------------------------------------------
-- PROCEDIMIENTO QUE ACTUALIZA EL VALORO DE LA VARIABLE DE SESIÓN --
--------------------------------------------------------------------------------------------------


<?php
$_SESSION["p_accion_boton"] = 'N';
if ( $_SESSION["p_usuario"] ) { $_SESSION["p_accion_boton"] = 'S'; }
?>

Lo curioso es que, en la función JS ("fun_accion_semaforo()") si substituyo la linea:
- v_ajax.open("GET", "./php_accion_boton.php");
por:
- v_ajax.open("POST", "./php_accion_boton.php");

Sí que funciona... alguien podría ayudarme.

Muchas gracias.
  #2 (permalink)  
Antiguo 03/07/2011, 10:53
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: Problemas con AJAX en Mozilla ( y Safari )

1- al usar AJAX debes forzar la expiración de la caché desde el server (PHP):

Código PHP:
Ver original
  1. header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
  2. header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" );
  3. header( "Cache-Control: no-cache, must-revalidate" );
  4. header( "Pragma: no-cache" );

2- si la sesión no es automática (remendado), debes hacer una llamada a session_start() antes de cualquier acceso a $_SESSION, de lo contrario no se cargarán lo datos de sesión, como mínimo debe de ser la primera linea en todas las páginas que usen sesiones.

3- recuerda que PHP se ejecuta del lado del servidor, es inútil hacer una llamada a session_start() despues del bloque de AJAX, recuerda que el bloque javascript AJAX se ejecuta después en el cliente

4- usa <?php en vez de los short tags que están depreciados

recuerda usar la herramienta del foro Highlight para mostrar mejor el código
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Última edición por maycolalvarez; 03/07/2011 a las 10:58
  #3 (permalink)  
Antiguo 03/07/2011, 14:49
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Problemas con AJAX en Mozilla ( y Safari )

Gracias por la respuesta. Pero no hay manera.. de hecho el código que enviaba antes no era del todo el correcto. Os envío el código que empleo:

---------------------------------------------------------------------------------
-------------------------- CREA EL OBJETO AJAX --------------------------
---------------------------------------------------------------------------------

function fun_nuevo_ajax()
{
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
lo que se puede copiar tal como esta aqui */
var xmlhttp=false;
try
{
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
// Creacion del objeto AJAX para IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }

return xmlhttp;
}

---------------------------------------------------------------------------------
------------------------ FUNCIÓN JS QUE CREA EL OBJETO AJAX ------
---------------------------------------------------------------------------------

function fun_accion_semaforo()
{
var v_ajax = fun_nuevo_ajax();

// uso del medoto GET.
v_ajax.open("GET", "./php_accion_boton.php");

//como hacemos uso del metodo GET colocamos null
v_ajax.send(null);

return 0;
}


---------------------------------------------------------------------------------
-- PHP QUE ACTUALIZA EL VALOR DE LA VARIABLE DE SESIÓN --
---------------------------------------------------------------------------------


<?php
session_start();
header("Cache-Control: no-store, no-cache, must-revalidate");

$_SESSION["p_semaforo_acc"] = 'N';

if ( $_SESSION["p_usuario"] ) { $_SESSION["p_semaforo_acc"] = 'S'; }
?>
  #4 (permalink)  
Antiguo 03/07/2011, 15:10
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 10 meses
Puntos: 4
Respuesta: Problemas con AJAX en Mozilla ( y Safari )

Otra cosa curiosa es que, si creo una web con un link hacia el "PHP QUE ACTUALIZA EL VALOR DE LA VARIABLE DE SESIÓN", funciona correctamente. Muestro el contenido de la variable y lo ha actualizado. Así pues, volviendo al error, el problema tiene que estar:

1 - En la función que crea el objeto AJAX
2 - En la llamada

Y no logro ver dónde estña el problema...
  #5 (permalink)  
Antiguo 03/07/2011, 18:24
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: Problemas con AJAX en Mozilla ( y Safari )

¿¡¡¡¡¡es muy difícil usar la herramienta Highlight de foro!!!!!?

NOTA: si ya implementaste la expiración de la caché en php, debes de borrar al menos la primera vez la caché en el navegador, de lo contrario seguirá recuperando la cacheada....
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: ajax, mozilla, safari
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:33.