Foros del Web » Programando para Internet » Javascript »

Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

Estas en el tema de Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery) en el foro de Javascript en Foros del Web. Buenas a todos, primero decir que no sé si este mensaje debería ir aquí o en el foro de PHP. Soy webmaster totalmente amateur de ...
  #1 (permalink)  
Antiguo 14/01/2014, 13:03
 
Fecha de Ingreso: enero-2014
Ubicación: Sabadell
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

Buenas a todos, primero decir que no sé si este mensaje debería ir aquí o en el foro de PHP.
Soy webmaster totalmente amateur de una página web en la que tengo un formulario PHP el cual necesito que realice varias acciones.
Primero necesito que se valide de dos formas distintas según la información introducida por el usuario, una vez validado necesito que se manden los datos a una base de datos y que me lleguen por correo electrónico, y por último, y aquí tengo el "problema" que se conecte a un TPV (pasarela de pagos virtual).

Bien, lo tengo todo implementado correctamente, pero el código base del TPV requiere de un segundo formulario con un botón submit propio para hacer la conexión con el TPV, y quiero que la acción que realiza este botón submit se realice automáticamente cuando se carga este segundo formulario.

El código del botón por defecto es el siguiente:

echo "<input type=hidden name=Ds_Merchant_MerchantSignature value='$signature'>
</td></tr>
<center><a href='javascript:calc()'><img src='/tpvirtual.jpg' border=0 ALT='TPV Virtual'></a></center>
</form>
</body>

Buscando por internet he encontrado la función de jquery "setTimeout (function(),tiempo)" que permite ejecutar la acción function pasado un tiempo.
Entonces he modificado el código de esta forma:

echo "<input type=hidden name=Ds_Merchant_MerchantSignature value='$signature'>
</td></tr>
<script languange=JavaScript>
setTimeout (calc(),1);
</script>
</form>
</body>

con lo que debería llamarse a la función "calc()" al cabo de 1ms, pero eso no ocurre. No ocurre nada.
Tengo jQuery implementado en el HEAD de la página, la función "calc()" está definida previamente con un script javascript y funciona correctamente ejecutandola con el botón, pero al modificar el botón por el script no funciona.

Espero haber explicado bien mi situación y que alguien pueda ayudarme.

Gracias de antemano!
  #2 (permalink)  
Antiguo 14/01/2014, 13:24
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

Código Javascript:
Ver original
  1. setTimeout("calc()",1);

o
Código Javascript:
Ver original
  1. setTimeout(calc,1);

o
Código Javascript:
Ver original
  1. setTimeout(function(){calc()},1);

  #3 (permalink)  
Antiguo 14/01/2014, 13:59
 
Fecha de Ingreso: enero-2014
Ubicación: Sabadell
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

Gracias PHPeros, he probado la segunda y tercera opción y sigue sin funcionar, no sé que debo estar haciendo mal.

La primera opción no puedo utilizarla porqué estoy dentro de PHP <?PHP ?> y no me acepta las comillas"".
  #4 (permalink)  
Antiguo 14/01/2014, 14:07
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

A ver, en vez de poner una milésima pon 1000 que equivalen a un segundo.

Sino va a ser un problema más profundo.
  #5 (permalink)  
Antiguo 14/01/2014, 14:32
 
Fecha de Ingreso: enero-2014
Ubicación: Sabadell
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

Tampoco funciona. Lo curioso es que hace un mes aprox. hice una prueba y funcionó a la perfección. Ahora he recuperado el mismo código que utilicé (el que he puesto aquí) y ya no va...:S
  #6 (permalink)  
Antiguo 14/01/2014, 17:56
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

Puedes Mostrar más código.
__________________
_
  #7 (permalink)  
Antiguo 15/01/2014, 10:44
 
Fecha de Ingreso: enero-2014
Ubicación: Sabadell
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

Este es el código completo de conexión al TPV.

<?PHP


function ShowError () {
echo "<html><head><title>Results</title></head><body><table width=100% height=50%><tr><td><p><h2><center>Compruebe que todos los datos del formulario son correctos!!</center></h2></p></td></tr></table></body></html>\n";
} # End of function ShowError

function ShowForm ($amount,$currency,$producto) {
// Posted data
global $HTTP_POST_VARS;

// Valores constantes del comercio
$url_tpvv='https://sis-t.redsys.es:25443/sis/realizarPago';
$clave='XXXXXXXXXXXXXXX';
$name='XXXXXXXXXXXXXX';
$code='XXXXXXXXXXXXXX';
$terminal='1';
$order=date('ymdHis');
$amount= $_POST["cantidad"]*100;
$currency='978';
$transactionType='0';
$urlMerchant='';
$producto='Donacion';

// Now, print the HTML script
echo "
<script language=JavaScript>
function calc() {
vent=window.open('','tpv','width=725,height=600,sc rollbars=no,resizable=yes,status=yes,menubar=no,lo cation=no');
document.forms[0].submit();}
</script>
<body bgcolor=white >
<style>
a{text-decoration:none}
</style>
<form name=compra action=$url_tpvv method=post target=tpv>
";

echo "</td>
</tr><tr><td>
<input type=hidden name=Ds_Merchant_Amount value='$amount'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Currency value='$currency'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Order value='$order'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_MerchantCode value='$code'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_Terminal value='$terminal'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_TransactionType value='$transactionType'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_MerchantURL value='$urlMerchant'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_UrlOK value='$urlOK'>
</td></tr><tr><td>
<input type=hidden name=Ds_Merchant_UrlKO value='$urlKO'>
</td></tr><tr><td>";

// Compute hash to sign form data
// $signature=sha1_hex($amount,$order,$code,$currency ,$clave);
$message = $amount.$order.$code.$currency.$transactionType.$u rlMerchant.$clave;
$signature = strtoupper(sha1($message));

echo "<input type=hidden name=Ds_Merchant_MerchantSignature value='$signature'>
</td></tr>
<script languange=JavaScript>
setTimeout(calc,1000);
</script>
</form>
</body>

";
} # End of function ShowForm

?>
  #8 (permalink)  
Antiguo 15/01/2014, 11:05
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

¿Te notifica algún error la consola de tu navegador?
  #9 (permalink)  
Antiguo 15/01/2014, 12:06
 
Fecha de Ingreso: enero-2014
Ubicación: Sabadell
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

No, no hay ningún error de sintaxis.
  #10 (permalink)  
Antiguo 15/01/2014, 12:18
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

Cita:
action="<?php echo $url_tpvv ?>"
Errores de este tipo tienes muchos
  #11 (permalink)  
Antiguo 15/01/2014, 12:30
 
Fecha de Ingreso: enero-2014
Ubicación: Sabadell
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

No entiendo, ¿donde está esa linea? El código es así por defecto, y utilizando el botón funciona todo perfectamente. El problema está cuando intento substituir el botón por setTimeout para ejecutar calc() automáticamente...:S
  #12 (permalink)  
Antiguo 17/01/2014, 06:36
 
Fecha de Ingreso: enero-2014
Ubicación: Sabadell
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

Sigo haciendo pruebas y no funciona...¿A alguien se le ocurre donde puede estar el problema?
  #13 (permalink)  
Antiguo 17/01/2014, 08:18
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 11 años, 2 meses
Puntos: 578
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

Te recomiendo crear un nuevo tema en el foro PHP.

PD: Y crea un titulo algo más relacionado con php.
  #14 (permalink)  
Antiguo 23/01/2014, 06:27
 
Fecha de Ingreso: enero-2014
Ubicación: Sabadell
Mensajes: 12
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema al ejecutar acción PHP automáticamente con setTimeout (jQuery)

Después de mucho darle vueltas y probar siempre con el mismo sistema y navegador (Safari en Mac), pensé que a lo mejor eso me daba problemas. Probado en Windows con Firefox y funciona como la seda...¡perdón por las molestias!

Ahora viene mi nuevo problema...Safari por defecto bloquea las ventanas de aparición automática, con lo que deshabilitando esta opción funciona bién.
¿Hay alguna forma de que, al enviar el formulario, éste compruebe si el usuario tiene habilitado algun bloqueador de pop-ups o ventanas automáticas, y se lo notifique para que lo deshabilite? O, mejor aún, ¿Se puede evitar que la ventana automática se bloquee?

Gracias de nuevo!

Etiquetas: formulariosenphp, php, settimeout, submit
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 11:13.