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

Ayuda con tema Ajax e IE7

Estas en el tema de Ayuda con tema Ajax e IE7 en el foro de Frameworks JS en Foros del Web. Holas a todos , a ver si me pueden ayudar con un temita del ajax + asp + ie7 (netamente ajax ya que no me ...
  #1 (permalink)  
Antiguo 21/11/2007, 10:02
kh7
 
Fecha de Ingreso: noviembre-2007
Mensajes: 5
Antigüedad: 16 años, 5 meses
Puntos: 0
Ayuda con tema Ajax e IE7

Holas a todos , a ver si me pueden ayudar con un temita del ajax + asp + ie7 (netamente ajax ya que no me actualiza los datos de forma dinamica)

lo unico que hace el codigo es mostrar un select de una base de datos oracle,
y lo muestra en un div mas abajo,... Ahora, en estricto rigor, esto lo hace pero lo que no hace es que cuando se acutaliza la tabla en la base de datos no se ve reflejada en pantalla de forma automatica, y yo tengo puesto que el XMLHttpRequest se realice cada 1 segundo, mediante un setInterval...
bueno ademas puse un boton que realizara el ajax, por si acaso...cada vez que hago click en el tampoco me devuelve la tabla actualizada.

* ojo que no estoy usando asp.net solo es asp...

* Conste que esto sirve en Firefox 2.0.0.x
(por eso FF la lleva , e internet exploiter no:-p)

aqui va el codigo : (formu.asp)

Código:
<html>
<head>
<script>
function AnularPeticion(){ http.abort(); }

function handleHttpResponse()
{
    if(http.readyState == 4)
    {
        clearTimeout(timerAnular);
        if(http.status == 200)
        {
            if(http.responseText.indexOf('invalid') == -1)
            {
                //divide el resultado en comas
                //results=http.responseText.split(",");
                //document.getElementById("campoMsj").innerHTML=results[0];
                document.getElementById("campoMsj").innerHTML=http.responseText;
                enProceso=false;
             }
        }
        else
        {
            alert("No se pudo recuperar la información: " + http.statusText + ". (Status = " + http.status + ")");
        }
    }
}
function muestra()
{
    if(!enProceso && http)
    {
        //var valor=escape(document.getElementById("filtro").value);
        //var url="consulta.asp?filtro="+valor;
        var url="consulta.asp";
        //consulta.asp hace una consulta a una tabla en la base de datos,
        //y pone los datos ordenados en una tabla.
        http.open("GET",url,true);
        http.onreadystatechange = handleHttpResponse;
        enProceso=true;
        http.send(null);
    }
    else
    {
        alert("El sistema esta en proceso...");
    }
}
function getHTTPObject()
{
    var xmlhttp;
    if (!xmlhttp)
    {                       
        if(window.XMLHttpRequest)
        {
            try { xmlhttp = new XMLHttpRequest(); }
            catch(e) {
                alert("No se puede realizar la actualización de datos, consulte con soporte técnico")
                xmlhttp = false;
            }
        // branch for IE/Windows ActiveX version
        }
        else if(window.ActiveXObject)
        {
            try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
            catch(e) { 
                try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
                catch(e)
                {
                    alert("No se puede realizar la actualización de datos, consulte con soporte técnico")
                    xmlhttp = false;
                }
            }
        }              
    }
	return xmlhttp;
}

var enProceso = false; //comprueba proceso activo
var http = getHTTPObject(); //Crea el object XMLHttpRequest

//5000 = 5 segundos = 5000 milisegundos
var timerAnular = setTimeout("AnularPeticion()", 5000);
//realiza la funcion muestra cada 1 segundo (1000 milisegundos)
window.setInterval("muestra() ",1000); 

</script>
<style>
    div
    {
        border : hidden 2px #ff0000; 
        background : #FFF; 
        padding : 10px; 
        width : 100%; 
        height : 50%; 
        overflow : auto; 
    }
</style>
</head>
<body>
<form action="post">
<h3>PRUEBA</h3>
<input type="button" value="Actualizar Ahora" onclick="muestra();" />
<hr />
</form>
<div id="campoMsj"></div>
</body>
</html>
realmente no se que pasa que no me actualiza los registros ... y necesito la ayuda de los masters! osea ustedes!
  #2 (permalink)  
Antiguo 21/11/2007, 15:42
kh7
 
Fecha de Ingreso: noviembre-2007
Mensajes: 5
Antigüedad: 16 años, 5 meses
Puntos: 0
De acuerdo Re: Ayuda con tema Ajax e IE7

ya!! LO TENGO! esta solucionado!! jeje , parece que tenia que ver con la expiracion de la pagina le puse un "response.expired -1" al inicio y ademas en el codigo almacene la info en buffer con "response.buffer = true", para despues mostrarla con "Response.Flush" y limpiarlo con "Response.Clear".,
jojoooo, gracias de todas maneras por leerlo, gracias totales
  #3 (permalink)  
Antiguo 22/11/2007, 07:04
 
Fecha de Ingreso: noviembre-2007
Mensajes: 33
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Ayuda con tema Ajax e IE7

puedes explicar un poco mas o mejor aun, mostrar un ejemplo??
  #4 (permalink)  
Antiguo 22/11/2007, 14:28
kh7
 
Fecha de Ingreso: noviembre-2007
Mensajes: 5
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Ayuda con tema Ajax e IE7

sip, mira la pagina que mando a llamar via ajax , consulta.asp
(unico que hice para que funcionara en Internet Explorer 7 pero ojo es el 7 no lo he probado en 6)
es hacer que la pagina expirara inmediatamente mediante "response.expires -1"

aqui va el codigo : (consulta.asp)

Código:
<%
	Response.Expires = -1
	Response.Buffer = true
	Response.Clear
	 Set objConn = Server.CreateObject("ADODB.Connection")     
     objConn.Open "Provider=MSDAORA;Data Source=bla;User Id=***;Password=***;"
     ' si es que el usuario esta bajo un proxy
     direccion_ip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
     if direccion_ip = "" then 
        direccion_ip = Request.ServerVariables("REMOTE_ADDR") 
     end if
     strSQL="select * from log_mensajes ......."
     Set objRs = objConn.Execute(strSQL)
     Response.Write "<table border=1 cellpadding=2>"
     Response.Write "<tr>"
     'Cabecera
     For I = 0 To objRS.Fields.Count - 1
       Response.Write "<td><b>" & objRS(I).Name & "</b></td>"
     Next
     Response.Write "</tr>"
     Do While Not objRS.EOF
       Response.Write "<tr>"
       For I = 0 To objRS.Fields.Count - 1
         Response.Write "<td>" & objRS(I) & "</td>"
       Next
       Response.Write "</tr>"
Response.Flush
	   Response.Clear
       objRS.MoveNext
     Loop
     Response.Write "</table>"
     Response.Clear
     objRs.Close
     objConn.Close
%>
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 05:19.