JavaScript - ejecucion de escrip mediante boton

 
Vista:
sin imagen de perfil

ejecucion de escrip mediante boton

Publicado por jose maria (27 intervenciones) el 15/06/2014 20:07:46
hola, tengo un archivo php que tiene una rutina html incorporada dentro, parte de esa rutina es este codigo:

1
2
3
4
5
6
7
<script language=JavaScript>
function calc() {
vent=window.open('','tpv','width=725,height=600,scrollbars=no,resizable=yes,status=yes,menubar=no,location=no');
document.forms[0].submit();}
</script>
........
<a href='javascript:calc()'><img src='img/imagen.png' width='94' height='31' />

como veis, al pulsar el boton hace una llamada a la funcion cal que la ejecuta
bien, yo quise incorporar a esa funcion una tarea mas. y modifique el codigo de esta asi:

1
2
3
4
5
6
<script language=JavaScript>
function calc() {
vent=window.open('','tpv','width=725,height=600,scrollbars=no,resizable=yes,status=yes,menubar=no,location=no');
vent2=mail($email_destino, $asunto, $cuerpo_mensaje);
document.forms[0].submit();}
</script>

despues de esto dejo de funcionar el boton......
areglar esto es facil, quito ven2 y punto, ahora bien, me gustaria saber como puedo incluir en esa funcion la tarea de mandar un mail, aunque mail($email_destino, $asunto, $cuerpo_mensaje); no sea muy seguro, me gustaria utilizarlo, creo tambien que estoy metiendo algo puro de php en "html"
¿como puedo hacerlo?
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

ejecucion de escrip mediante boton

Publicado por xve (2100 intervenciones) el 16/06/2014 08:33:23
Es exactamente lo que comentas... no puedes poner PHP dentro JavaScript para que se ejecute en el navegador...

Para ello, tienes que hacer una petición AJAX a tu servidor para que envié el correo.
También podrías hacerlo en la pagina que abras con el window.open... (si es una página tuya claro...)

En la sección de codigo fuente de jquery, encontraras muchos ejemplos sencillos que te servirán, pero una manera muy simple seria algo así:

1
$.load("tupagina.php", {clave:valor, clave:valor}

Tienes que tener en cuenta, que los parámetros tienes que pasarlos en JavaScript, no en php...

Espero que te sirva...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ejecucion de escrip mediante boton

Publicado por jose maria (27 intervenciones) el 16/06/2014 17:18:01
hola, la pagina que se abre no es mia, es un enlace.... yo si que mando informacion a ella mediante post..... por eso quiero poner un aviso en mi enlace para saber cuando se manda o no informacion a esta
la verdad es que no sabria desarrollar lo que dices, de jquerry solo me se alguna cosilla muy muy basica y de ajax ya ni te cuento......
¿podrias ayudarme mas?
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

ejecucion de escrip mediante boton

Publicado por xve (2100 intervenciones) el 16/06/2014 19:52:38
Hola Jose Maria, la verdad es que no tengo muy claro exactamente que quieres hacer, ni de donde salen los valores de las variables... si me indicas exactamente que quieres hacer, intento ayudarte... siempre y cuando no sea un proyecto entero...;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ejecucion de escrip mediante boton

Publicado por jose maria (27 intervenciones) el 16/06/2014 20:32:07
gracias, y no te preocupes que no es un proyecto entero.....
aber, tengo el dichoso codigo:

1
2
3
4
5
6
7
<script language=JavaScript>
function calc() {
vent=window.open('','tpv','width=725,height=600,scrollbars=no,resizable=yes,status=yes,menubar=no,location=no');
document.forms[0].submit();}
</script>
........
<a href='javascript:calc()'><img src='img/imagen.png' width='94' height='31' />

cuando pulso el boton (<a href='javascript:calc()'><img src='img/imagen.png' width='94' height='31' />)
se ejecuta el script anterior, o mejor dicho, la funcion calc() (esta abre una ventana ya definida en el codigo con unas caracteristicas concretas......)
asta ahy creo que estamos de acuerdo ¿verdad?
pues aparte de todo eso, quiero insertar en la misma funcion (por ejemplo) el codigo necesario para mandar un mail con los datos definidos anteriormente en el codigo php:
1
2
3
4
5
6
7
$email_destino='correo@gmail.com';
$asunto='Datos de la operacion';
$cuerpo_mensaje="Datos del formulario:\n".
"dato1=$name\n".
"Importe=$moneda \n".
"Descripcion=$descripcion\n".
"Referencia=$order\n";

otra forma seria definir otra funcion para hacer esto y que al pulsar ese boton se ejecuten las dos funciones.....

espero que ahora quede el tema mas claro
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ejecucion de escrip mediante boton

Publicado por jose maria (27 intervenciones) el 16/06/2014 22:15:21
bueno, adapte el codigo tanto html como el php para que veais la base:
codigo html:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<html>
<head>
<title></title>
</head>
<body>
<form action="php.php" method="post">
dato1:<input name="dato1" type="text">
<br>
dato2:<input name="dato2" type="text">
<br>
dato3:<input name="dato3" type="text">
<br>
<input type="submit" value="Enviar">
</form>
</body>
</html>
 
codigo php:
 
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<body>
<?PHP
$order=date('ymdHis');
$dato1=$_POST['dato1'];
$dato2=$_POST['dato2'];
$dato3=$_POST['dato3'];
$email_destino='correo@gmail.com';
$asunto='Datos del pago';
$cuerpo_mensaje="Datos del formulario:\n".
"dato 1=$dato1\n".
"dato 2=$dato2\n".
"dato 3=$dato3\n".
"Referencia=$order\n";
echo "
<html>
<head>
<title></title>
<script language=JavaScript>
function calc() {
vent=window.open('https://www.google.es/');
document.forms[0].submit();}
</script>
</head>
<body>
dato 1:$dato1
<br>
dato 2:$dato2
<br>
dato 3:$dato3
<br>
<a href='index.html'><img src='img/b_volver.png' width='94' height='31'/></a><a href='javascript:calc()'><img src='img/b_ok.png' width='94' height='31' /></a>
 </form>
</body>
</html>";
?>

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

ejecucion de escrip mediante boton

Publicado por xve (2100 intervenciones) el 17/06/2014 08:15:55
Hola Jose Maria, gracias por comentarlo, te entiendo perfectamente....

Para lo que tu quieres hacer, creo que solo hay dos maneras...

1.- refrescando la pagina y poniendo el código de PHP para enviar el correo.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if($_SERVER["QUERY_STRING"]=="reload")
{
	# aqui la función para enviar el correo
}
?>
<html>
<head>
	<script>
		function calc() {
			vent=window.open('','tpv','width=725,height=600,scrollbars=no,resizable=yes,status=yes,menubar=no,location=no');
			window.location.href=window.location.href+"?reload";
		}
	</script>
</head>
<body>
	<a href='javascript:calc()'><img src='img/imagen.png' width='94' height='31' />
</body>
</html>


2.- hacer una petición ajax para que envié el correo.
http://api.jquery.com/jquery.ajax/


Espero que te sirva... coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ejecucion de escrip mediante boton

Publicado por jose maria (27 intervenciones) el 17/06/2014 14:34:52
bueno, lo de ajax, estoy empezando con javascript, y reconozco que puede que esto me quede grande, pero me gustan los retos, ahora bien, jquery y ajax, aunque he tocado poquito, creo que para enfrentarme a ese reto, devo superar bien este primero.....

sobre la sugerencia del codigo
¿quedaria asi? no me funciona..... gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<body>
<?PHP
$order=date('ymdHis');
$dato1=$_POST['dato1'];
$dato2=$_POST['dato2'];
$dato3=$_POST['dato3'];
$email_destino='correo@gmail.com';
$asunto='Datos del pago';
$cuerpo_mensaje="Datos del formulario:\n".
"dato 1=$dato1\n".
"dato 2=$dato2\n".
"dato 3=$dato3\n".
"Referencia=$order\n";
if($_SERVER["QUERY_STRING"]=="reload")
{
	mail($email_destino, $asunto, $cuerpo_mensaje);
}
echo "
<html>
<head>
<title></title>
<script language=JavaScript>
function calc() {
			vent=window.open('https://www.google.es/');
			window.location.href=window.location.href+"?reload";
document.forms[0].submit();}
</script>
</head>
<body>
dato 1:$dato1
<br>
dato 2:$dato2
<br>
dato 3:$dato3
<br>
<a href='index.html'><img src='img/b_volver.png' width='94' height='31'/></a><a href='javascript:calc()'><img src='img/b_ok.png' width='94' height='31' /></a>
 </form>
</body>
</html>";
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

ejecucion de escrip mediante boton

Publicado por xve (2100 intervenciones) el 17/06/2014 17:11:05
Jose Maria, porque utilizas echo para mostrar la pagina?

Si utilizas un echo "" con comillas, no puedes volver a utilizar comillas en el contenido de dicho echo "", y eso es lo que haces en la linea de javascript. Tienes que escapar dichas comillas... \"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ejecucion de escrip mediante boton

Publicado por jose maria (27 intervenciones) el 17/06/2014 20:24:21
de lo que yo he podido comprender, siempre que se quiera ejecutar un codigo html dentro de un php habia que hacerlo con echo" ahora bien, yo estoy aprendiendo, ago caso a los sabios, mirare y quitare el echo, aber que pasa....
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ejecucion de escrip mediante boton

Publicado por jose maria (27 intervenciones) el 17/06/2014 22:38:54
tengo un problemilla, en la parte del codigo:
if($_SERVER["QUERY_STRING"]=="reload")
{
mail($email_destino, $asunto, $cuerpo_mensaje);
}
al dar al boton enviar, me vuelve a cargar el php y el dato que envia por email de $order=date('ymdHis'); es diferente al que se envia al abrir la pagina en vent=window.open('https://www.google.es/'); (aunque no es la de google)

si quito lo de "reload" no carga de nuevo, pero tampoco envia el mail.....
¿como se solucionaria?
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

ejecucion de escrip mediante boton

Publicado por xve (2100 intervenciones) el 18/06/2014 08:40:24
Exactamente que quieres que haga tu pagina Jose Maria? no se exactamente que quieres que haga.

quieres que se pulse el botón, envié el correo, y luego? que se pare la ejecución de la pagina? que muestre un mensaje?

Si nos puedes comentar exactamente los pasos que quieres que haga, intento mostrarte como hacerlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ejecucion de escrip mediante boton

Publicado por jose maria (27 intervenciones) el 18/06/2014 14:08:57
bueno, ante todo, gracias y no te enfades.
te comento lo que esta haciendo y espero expresarme bien para que se entienda que es lo que quiero.....
cuando se carga el php (que tiene un codigo html incorporado) se dan valores a variables enviados mediante post, y se definen otros, en concreto $order=date('ymdHis');, imaginemos que a la hora de cargar este valor es 140618140250, luego entre pitos y flautas tardo 50segundos en darle al boton, pues el dato que se envia a la web que se carga mediante
function calc() {
vent=window.open('https://www.google.es/');
window.location.href=window.location.href+"?reload";
document.forms[0].submit();}

es el mismo 140618140250, pero el que se envia al mail es el calculado despues de pasar esos 50 segundos, osea, seria 140618140300 y esto he visto que sucede por que vuelve a cargar la pagina..... me da igual que vuelva a cargar, pero que la variable $order sea la misma que se envia a un lado que a otro
espero que ahora me haya expresado mejor y muchisimas gracias por la paciencia y ayuda dada

jose maria
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

ejecucion de escrip mediante boton

Publicado por xve (2100 intervenciones) el 18/06/2014 18:21:54
jejeje perdóname Jose, no me enfado... al contrario... que disfruto ayudando!!!

Ahora creo que te he entendido... haber que te parece este código, en el cual no utilizo javascript ya que creo que no es necesario.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<HTML>
 
<body>
<?php
$dato1=$_POST['dato1'];
$dato2=$_POST['dato2'];
$dato3=$_POST['dato3'];
 
if(isset($_POST["sendForm"]))
{
	$email_destino='correo@gmail.com';
	$asunto='Datos del pago';
	$cuerpo_mensaje="Datos del formulario:\n".
	"dato 1=$dato1\n".
	"dato 2=$dato2\n".
	"dato 3=$dato3\n".
	"Referencia=".$_POST["order"]."\n";
 
	mail($email_destino, $asunto, $cuerpo_mensaje);
}
$order=date('ymdHis');
?>
<html>
<head>
</head>
<body>
	<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="POST">
		<input type="hidden" name="sendForm" value="1">
		<input type="hidden" name="order" value="<?php echo $order?>">
		<input type="hidden" name="dato1" value="<?php echo $_POST["dato1"]?>">
		<input type="hidden" name="dato2" value="<?php echo $_POST["dato2"]?>">
		<input type="hidden" name="dato3" value="<?php echo $_POST["dato3"]?>">
		dato 1:<?php echo $dato1?>
		<br>
		dato 2:<?php echo $dato2?>
		<br>
		dato 3:<?php echo $dato3?>
		<br>
		<a href='index.html'><img src='img/b_volver.png' width='94' height='31'/></a><input type="image" src='img/b_ok.png' width='94' height='31'>
	</form>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar