Foros del Web » Estrategias Digitales y Negocios Online » Negocios »

Abrir Pop-up

Estas en el tema de Abrir Pop-up en el foro de Negocios en Foros del Web. Buenas, tengo una función en javascript, que al hacer click en el botón, me hace una petición post a un archivo PHP. El problema que ...
  #1 (permalink)  
Antiguo 31/07/2011, 11:44
 
Fecha de Ingreso: septiembre-2010
Mensajes: 15
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta Abrir Pop-up

Buenas,

tengo una función en javascript, que al hacer click en el botón, me hace una petición post a un archivo PHP. El problema que tengo, es que el archivo php es un proceso largo, puede durar del orden de 10-30minutos. Al ser un proceso largo, no muestra los resultados hasta que acaba el proceso, para evitar esto, he probado de vaciar los buffers etc etc, y esto funciona bien si llamo yo directamente al php desde el navegador, pero si lo hago con javascript no funciona (hasta que no pasen los 30min no muestra nada).

La idea que he tenido para que se vaya refrescando el buffer, es que al apretar el botón se haga esa petición pero en una nueva ventana, o si alguien sabe por que exactamente no me muestra el buffer que me lo diga (recuerdo que llamandolo directamente el buffer va saliendo poco a poco). El código que tengo es el siguiente:

Código:
function addpremiumaccounts() {
var url = "pages/premium.php";
var accounts = document.getElementById('accounts');
var hoster = document.getElementById('hoster');
var params = 'add=accounts&hoster='+hoster.value+'&data='+encodeURIComponent(accounts.value);

httpRequest.open("POST", url, true);
httpRequest.setRequestHeader("X-File-Name", "test");
httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
httpRequest.setRequestHeader("Content-length", params.length);
httpRequest.setRequestHeader("Connection", "close");
httpRequest.send(params);
}
La idea es hacer esa petición pero en una nueva ventana. He estado mirando y intentando diferentes metodos pero no lo consigo, y no creo que sea algo muy difícil. Si alguien tiene una idea le estaría agradecido.

saludos y gracias
  #2 (permalink)  
Antiguo 31/07/2011, 22:44
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: Abrir Pop-up

Fijate si te sirve algo así:
1.php:
Código PHP:
<?php
session_start
();
set_time_limit(0);
if(isset(
$_REQUEST['aux'])){
    if(isset(
$_SESSION['progress']))
        echo 
$_SESSION['progress'];
    else
        echo 
0;
    exit;
}
session_write_close();
$i=0;
while(++
$i<=100){
    @
session_start();
     echo 
"\n"
     @
ob_flush(); 
     @
flush(); 
    
$_SESSION['progress']=$i;
    
session_write_close();
    
sleep(1);
}
echo 
'Fin';
?>
2.php:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Documento sin título</title>
<
script type="text/javascript">
function 
http(){ 
    if(
typeof window.XMLHttpRequest!='undefined'){ 
        return new 
XMLHttpRequest(); 
    }else{ 
        try{ 
            return new 
ActiveXObject('Microsoft.XMLHTTP'); 
        }catch(
e){ 
            
alert('Su navegador no soporta AJAX'); 
            return 
false
        } 
    } 

function 
request(url,callback,params){ 
    var 
H=new http(); 
    if(!
H)return; 
    
H.open('post',url+'?'+Math.random(),true); 
    
H.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    
H.onreadystatechange=function(){ 
        if(
H.readyState==4){
            if(
H.responseText.indexOf('99')!=-1){
                    
ns.monit=0;
            }
            if(
callback)
                
callback(H.responseText); 
            
H.onreadystatechange=function(){} 
            
H.abort(); 
            
H=null
        } 
    } 
    var 
p=''
    for(var 
i in params){ 
        
p+='&'+i+'='+escape(params[i]); 
    } 
    
H.send(p); 
}
function $(
x){return document.getElementById(x);} 

function 
f(r){
    $(
'pp').innerHTML=r;
}
function 
m(r){
    $(
'pp').innerHTML='<div style="width:500px; height:10px; border:1px solid #000"><div style="height:10px; background:red; width:'+r+'%"></div></div>';
    if(
ns.monit){
        
setTimeout(function(){
                
request(ns.file,m,{'aux':1});            
        },
1000);
    }
}
var 
ns={monit:1,file:'1.php'}
onload=function(){ 
        
request(ns.file,m,{'aux':1});
        
request(ns.file,f,{}); 
        

</script>

</head>

<body>
<div id="pp"></div>
</body>
</html> 

Etiquetas: indicador, javascript, php, pop-up, progreso
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 16:17.