Webmaster > PHP

Problema de Actualización de una petición PhP

<< < (2/3) > >>

shakaran:
El script lo estas cargando mal /public_html es el directorio público desde el que parte el directorio de tu web, es decir /public_html es en realidad la raíz / de tu sitio web.

El script de mootools se carga en una linea, y el script que tu has escrito en otra:


--- Código: ---<script src="/mootools-core-1.4.5-full-compat-yc.js"></script>
<script>
window.addEvent('domready', function()
{   
//bla bla
</script>

--- Fin del código ---

shichibukai:
Nada sigue haciendome lo mismo =( del que partimos, es como sino llegase a realizar la petición PHP. Lo del botón si funciona ya, luego el mootools está bien vinculado. Pero la petición PHP para consultar los segundos no la realiza o no se que pasa.

El código es:


--- Código: ---<html>
    <head>
        <title><?=$_SERVER['HTTP_HOST'];?></title>
        <link rel="shortcut icon" type="image/ico" href="http://www.quijost.com/favicon.ico">
        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
        <style type="text/css">
        .dir{list-style-image:url(http://quijost.com/img/dir.png);list-style-type:square;}
        .file{list-style-image:url(http://quijost.com/img/file.png);list-style-type:square;}
        a:link,a:visited{color:#4D5A26;text-decoration:none;}
        </style>
        <script src="/mootools-core-1.4.5-full-compat-yc.js"></script>
        <script>
window.addEvent('domready', function()
{   
$('botonCopy').addEvent(
'click',
function()
{
$('temp_copiado').set('text', $('temporizador').get('text'));
}
);



function timer()
{
new Request({
'url' : 'script_hora.php',
onSuccess: function(response)
{
$('temporizador').set('text', response);
}
});
}
setTimeout('timer()', 1000);
});
</script>
    </head>
   
   
   
    <body style="background-color:#A8D324;margin:0px;padding:0px" onLoad="setTimeout('timer();',1000);">
        <div style="background:url(http://quijost.com/foro/Themes/core/images/catbg.jpg) repeat-x scroll 0 0 #B7CF6F;color:#FFFFFF;padding-left:10px;padding-right:10px;height:120px;">
            <a title="quijost.com :: El hospedaje de origen manchego" href="http://www.quijost.com" style="text-decoration:none">
                <img title="quijost.com :: El hospedaje de origen manchego" alt="quijost.com :: El hospedaje de origen manchego" src="http://www.quijost.com/img/logo.png" id="logo" border="0" />
                <div style="margin-top: -26px; margin-left: 105px; font-size: 10px; color: #4D5A26" id="slogan">El hospedaje de origen manchego.</div>
            </a>
        </div>

<div id="content" style="padding:15px">
<div id="subcontent" style="font-size:12px">
<br>
<textarea id="temporizador" style="cursor:default; border:transparent; background-color:transparent; font-size:18px; font-weight:bold; cursor:default; text-align:center; resize:none; height:30px; width:100px;"> 10 </textarea>
<br>
<input id="botonCopy" type=submit name=copy value=Copiar>
<br>
<textarea id="temp_copiado" style="cursor:default; border:transparent; background-color:transparent; font-size:18px; font-weight:bold; cursor:default; text-align:center; resize:none; height:30px; width:100px;"> 0 </textarea>
<br>                 
</div>
</div>
    </body>
</html>


--- Fin del código ---

shakaran:
La función timer() te esta dando error (puedes verlo en la consola de Firebug o Chrome).

Cambia:


--- Código: ---setTimeout('timer()', 1000);
--- Fin del código ---

Por:


--- Código: ---setTimeout('timer', 1000);
--- Fin del código ---

Y quizás necesites que la función timer() este fuera del windows.addEvent para que tenga ámbito global.

shichibukai:
Bueno ya solucione ese problema y se puede ver como si se realiza periodicamente el acudir a la función time. Pero sigue sin ejecutar el script PHP que realiza la consulta del tiempo. Por decir así nunca lanza el script_hora.php, luego el error está en:


--- Código: ---new Request({ 'url' : 'script_hora.php',
    onSuccess: function(response)
{
$('temporizador').set('text', response);
}
});

--- Fin del código ---


El código completo que tengo es:


--- Código: ---<html>
    <head>
        <title><?=$_SERVER['HTTP_HOST'];?></title>
        <link rel="shortcut icon" type="image/ico" href="http://www.quijost.com/favicon.ico">
        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
        <style type="text/css">
        .dir{list-style-image:url(http://quijost.com/img/dir.png);list-style-type:square;}
        .file{list-style-image:url(http://quijost.com/img/file.png);list-style-type:square;}
        a:link,a:visited{color:#4D5A26;text-decoration:none;}
        </style>
        <script src="/mootools-core-1.4.5-full-compat-yc.js"></script>
        <script>
var seg = 1
function timer()
{
$('temp_copiado').set('text', seg);
seg++;

window.addEvent('domready', function()
{   
new Request({
'url' : 'script_hora.php',
onSuccess: function(response)
{
$('temporizador').set('text', response);
}
});


$('botonCopy').addEvent(
'click',
function()
{
$('temp_copiado').set('text', $('temporizador').get('text'));
}
);
});
setTimeout('timer();', 1000);
}
</script>
    </head>
   
   
   
    <body style="background-color:#A8D324;margin:0px;padding:0px" onLoad="setTimeout('timer();',1000);">
        <div style="background:url(http://quijost.com/foro/Themes/core/images/catbg.jpg) repeat-x scroll 0 0 #B7CF6F;color:#FFFFFF;padding-left:10px;padding-right:10px;height:120px;">
            <a title="quijost.com :: El hospedaje de origen manchego" href="http://www.quijost.com" style="text-decoration:none">
                <img title="quijost.com :: El hospedaje de origen manchego" alt="quijost.com :: El hospedaje de origen manchego" src="http://www.quijost.com/img/logo.png" id="logo" border="0" />
                <div style="margin-top: -26px; margin-left: 105px; font-size: 10px; color: #4D5A26" id="slogan">El hospedaje de origen manchego.</div>
            </a>
        </div>

<div id="content" style="padding:15px">
<div id="subcontent" style="font-size:12px">
<br>
<textarea id="temporizador" style="cursor:default; border:transparent; background-color:transparent; font-size:18px; font-weight:bold; cursor:default; text-align:center; resize:none; height:30px; width:100px;"> 10 </textarea>
<br>
<input id="botonCopy" type=submit name=copy value=Copiar>
<br>
<textarea id="temp_copiado" style="cursor:default; border:transparent; background-color:transparent; font-size:18px; font-weight:bold; cursor:default; text-align:center; resize:none; height:30px; width:100px;"> 0 </textarea>
<br>                 
</div>
</div>
    </body>
</html>

--- Fin del código ---

shakaran:
Cuando me refería a poner la función timer de ámbito global, no me refería a englobar todo el código dentro de ella.

Este es el código que intentaba explicarte:


--- Código: ---<script src="/mootools-core-1.4.5-full-compat-yc.js"></script>
<script>
var seg = 1
function timer()
{
$('temp_copiado').set('text', seg)
seg++
}

window.addEvent('domready', function()
{   
$('botonCopy').addEvent(
'click',
function()
{
$('temp_copiado').set('text', $('temporizador').get('text'))
}
);

new Request({
'url' : 'script_hora.php',
onSuccess: function(response)
{
$('temporizador').set('text', response)
}
})

setTimeout('timer', 1000)
})
</script>
--- Fin del código ---

El evento domready se ejecuta cuando todos los elementos la jerarquía de elementos DOM (Document Object Model) son cargados. Posteriormente, añades un evento click, al "botonCopy" (yo lo cambiaría a buttonCopy por consistencia de nombres en ingles), que será ejecutado sólo cuando se haga click. Después se hace una llamada Ajax con Request al script php, que si es exitosa, establecerá el valor recibido en el elemento temporizador.

Una vez se haya ejecutado todo, pasará a llamarse la función timer, a intervalos de 1000 ms (1 seg). La función timer, debe tener ámbito global al domready, por lo que se ejecuta estableciendo el valor de la variable seg e incrementándola.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa