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

En IE solo funciona una vez

Estas en el tema de En IE solo funciona una vez en el foro de Frameworks JS en Foros del Web. Hola, estoy escribiendo una aplicación en AJAX y PHP que al pulsar un boton se debe llamar a una pagina .PHP que contiene un UPDATE ...
  #1 (permalink)  
Antiguo 08/11/2005, 04:01
 
Fecha de Ingreso: noviembre-2005
Mensajes: 29
Antigüedad: 18 años, 5 meses
Puntos: 0
En IE solo funciona una vez

Hola, estoy escribiendo una aplicación en AJAX y PHP que al pulsar un boton se debe llamar a una pagina .PHP que contiene un UPDATE de una tabla SQL.

En Firefix me funciona perfectamente, peró en el explorer solo funciona la primera vez y después deja de hacerlo.

Os muestro el código a ver si encontrais algo:


Este es el archivo "ajax.js"

-----------------------------------------------------
function crearAjax()
{
var xmlhttp=false;
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E)
{
xmlhttp = false;
}
}

if (!xmlhttp && typeof XMLHttpRequest!='undefined')
{
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

function cargarContenido(pagina_html, contenidor)
{
var contenedor;
contenedor = document.getElementById(contenidor);
// creamos un nuevo objeto ajax
_ajax=crearAjax();
//cargar el archivo html por el método GET
_ajax.open("GET", pagina_html,true);
_ajax.onreadystatechange=function()
{
if (_ajax.readyState==4) // Readystate 4 significa que ya acabó de cargarlo
{
contenedor.innerHTML = _ajax.responseText
}
}
_ajax.send(null)
}

var http = crearAjax();
-----------------------------------------------------

Esta es la función que hace la llamada a "cargarContenido" guardada en el archivo "dimensiona.js"

function fixar (event, id)
{
//Guardar les posicions en Cookies
document.cookie= id+"=1";
document.cookie= id+"_x="+dragObj.elNode.style.left.toString();
document.cookie= id+"_y="+dragObj.elNode.style.top.toString();

cargarContenido('save_cookie.php','txt_proves');
alert(document.cookie);
}


Y este es el HTML

<HTML>
<HEAD>
<LINK href="estils.css" type="text/css" rel="stylesheet">

<script src="ajax.js" type="text/javascript"></script>
<script src="dimensiona.js" type="text/javascript"></script>
</HEAD>
<BODY>
<span class="subtitol" onClick="cargarContenido('save_cookie.php','conten edor')" style="cursor:pointer">SQL</span>
</body>
  #2 (permalink)  
Antiguo 08/11/2005, 06:12
 
Fecha de Ingreso: noviembre-2005
Mensajes: 29
Antigüedad: 18 años, 5 meses
Puntos: 0
Os lo pongo más fácil, con este simple código, sigue sin funcionar en IE, da el primer valor y después nunca cambia por mucho que le des al boton:

<HTML><HEAD><TITLE>Página de início</TITLE>
<script>
function crearAjax()
{
var xmlhttp;
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E)
{
xmlhttp = false;
}
}

if (!xmlhttp && typeof XMLHttpRequest!='undefined')
{
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

function cargarContenido(pagina_html, contenidor)
{
var contenedor;
contenedor = document.getElementById(contenidor);
// creamos un nuevo objeto ajax
_ajax=crearAjax();
//cargar el archivo html por el método GET
_ajax.open("GET", pagina_html,true);
_ajax.onreadystatechange=function()
{
if (_ajax.readyState==4) // Readystate 4 significa que ya acabó de cargarlo
{
contenedor.innerHTML = _ajax.responseText
}
}
_ajax.send(null)
}

var http = crearAjax();
</script>
</HEAD>
<BODY>
<span onClick="cargarContenido('save_cookie.php','conten edor')" style="cursor:pointer">Pedir hora</span>
<br><br>
<DIV class="content" id="contenedor"> ¿Hora?</div>
</BODY></HTML>

save_cookie.php

<?php
echo date ('H-i-s');
?>
  #3 (permalink)  
Antiguo 08/11/2005, 07:17
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 10 meses
Puntos: 4
esto ya se habló 760 veces. cuando recibis los datos aca le metes un abort() solo para IE, asi que debes crear una variable que detecte navegador.

if (_ajax.readyState==4)
{
contenedor.innerHTML = _ajax.responseText;
if (IE) _ajax.abort();
}

bueno aca pongo mi codigo:
var OPERA = (/Opera/i.test(window.navigator.userAgent));
var IE = (/MSIE/i.test(window.navigator.userAgent) && !OPERA);
var MOZ = (/(Firefox|gecko)/i.test(window.navigator.userAgent));
__________________
Internet Explorer SuckS
Download FireFox
  #4 (permalink)  
Antiguo 10/11/2005, 16:31
 
Fecha de Ingreso: enero-2004
Mensajes: 310
Antigüedad: 20 años, 3 meses
Puntos: 0
SIR, he creado la variable y he puesto el abort, pero me sigue sucendiendo lo mismo
if (_val_is_ie) _ajax.abort();
}

var _val_is_ie=((_val_agt.indexOf("msie")!=-1) && (_val_agt.indexOf("opera")==-1));

function handleHttpResponse() {
if (http.readyState == 4) {
respuesta = http.responseText;
alert(respuesta);
if (_val_is_ie){
http.abort();
}
alert(_val_is_ie);
if (respuesta != ""){
alert(respuesta);
}

}
}
__________________
Un saludo,
Trucos
Videos
  #5 (permalink)  
Antiguo 10/11/2005, 17:27
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 10 meses
Puntos: 4
es raro porque yo lo solucione de esa forma, sino la otra que queda es crear el objeto cada vez que haces un request
__________________
Internet Explorer SuckS
Download FireFox
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 19:54.