Foros del Web » Programando para Internet » Javascript »

Hacer que una pagina realice el submit de un formulario que esta en otra pagina

Estas en el tema de Hacer que una pagina realice el submit de un formulario que esta en otra pagina en el foro de Javascript en Foros del Web. Buenas comunidad, llevo horas pensando y buscando como hacer esto y no logro encontrar nada. Veran tengo el archivo examen.php con el formulario "examen", despues ...
  #1 (permalink)  
Antiguo 03/10/2012, 10:49
 
Fecha de Ingreso: junio-2012
Mensajes: 30
Antigüedad: 12 años, 5 meses
Puntos: 1
Pregunta Hacer que una pagina realice el submit de un formulario que esta en otra pagina

Buenas comunidad, llevo horas pensando y buscando como hacer esto y no logro encontrar nada.
Veran tengo el archivo examen.php con el formulario "examen", despues tengo un div llamado "cerrado" que se mantiene actualizado con el contenido de examencerrado.php (Mediante ajax) El archivo examencerrado se actualiza cada segundo para verificar el estado, si estado es igual a cerrado, ejecuta un submit. Como puedo hacer para que el archivo examencerrado.php realice el submit del archivo examen.php?? Este es el codigo de examencerrado.php


Código PHP:
<?php 
session_start
();

include(
"config.php");
$conectar=mysql_connect($servidor,$bd_usuario$bd_pass);
mysql_select_db($bd_nombre,$conectar);
$resultado=mysql_query("SELECT * FROM `a3573169expo`.`pruebas` WHERE id_prueba=$_SESSION[id]"$conectar) or die (mysql_error());
$busqueda mysql_fetch_array($resultado);
$estado=$busqueda[estado];

if(
$estado==0){
?>


<p id="x">El examen se cerrara en 10 segs.</p>
<script type="text/javascript">
//<![CDATA[
t = setInterval('miFuncion()',1000);
//]]>
</script>

<?php
}
?>
Y este seria el e examen, es mucho asi que no lo pondre todo:

Código HTML:
<head>

<script type="text/javascript">
//<![CDATA[
var t;
var a=10;
*
function envia(){
document.forms["examen"].submit();
}
*
*
function miFuncion(){
a--;
if(a == 0){
clearInterval(t);
envia();
}
document.getElementById('x').innerHTML = "El examen se cerrara en " + a + " segs.";
*
}
//]]>
</script>
</head>

<div id="cerrado">
</div>

<body>
<form id="examen" action="enviar.php">
<!---contenido--->
</form>
</body> 
En el momento de cerrar el examen, aparece el texto que dice "el examen ha sido cerrado" pero no ejecuta el submit
  #2 (permalink)  
Antiguo 03/10/2012, 11:06
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Hacer que una pagina realice el submit de un formulario que esta en otra p

buenas...
te falto mostrar la parte más importante, el código ajax. para que examencerrado.php pueda realizar el submit, php tendría que entregarle como contenido código javascript y luego javascript procesar ese contenido como scripting. aunque es una alternativa, en mi opinión es más complicado para lo que necesitas. lo que debes hacer es generar un contenido que indique el estado. luego en el evento de ajax determinas el estado en base a ese contenido. si es X estado, haces A cosa; si es Y estado, haces B o simplemente haces nada. en fin, es desde este evento que tienes que realizar el submit.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 03/10/2012, 15:20
 
Fecha de Ingreso: junio-2012
Mensajes: 30
Antigüedad: 12 años, 5 meses
Puntos: 1
Pregunta Respuesta: Hacer que una pagina realice el submit de un formulario que esta en otra p

Disculpa no crei que fuera importante, no lo puse porque si me esta funcionando.

Código:
/*
* Parametros mandatorios
*/
    var seconds = 10; // el tiempo en que se refresca
	var divid = "cerrado"; // el div que quieres actualizar!
	var url = "cerrarexamen.php"; // el archivo que ira en el div

	function refreshdiv(){

		// The XMLHttpRequest object

		var xmlHttp;
		try{
			xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
		}
		catch (e){
			try{
				xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
			}
			catch (e){
				try{
					xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e){
					alert("Tu explorador no soporta AJAX.");
					return false;
				}
			}
		}

		// Timestamp for preventing IE caching the GET request
		var timestamp = parseInt(new Date().getTime().toString().substring(0, 10));
		var nocacheurl = url+"?t="+timestamp;

		// The code...

		xmlHttp.onreadystatechange=function(){
			if(xmlHttp.readyState== 4 && xmlHttp.readyState != null){
				document.getElementById(divid).innerHTML=xmlHttp.responseText;
				setTimeout('refreshdiv()',seconds*1000);
			}
		}
		xmlHttp.open("GET",nocacheurl,true);
		xmlHttp.send(null);
	}

	// Empieza la función de refrescar

	window.onload = function(){
		refreshdiv(); // corremos inmediatamente la funcion
	}
Lo que ocupo es que el primer archivo, ejecute el submit del segundo
  #4 (permalink)  
Antiguo 03/10/2012, 16:12
 
Fecha de Ingreso: junio-2012
Mensajes: 30
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Hacer que una pagina realice el submit de un formulario que esta en otra p

Encontre que se debe usar la funcion eval() porque ajax imprime todo como texto, por eso no interpreta mi codigo javascript. Alguien sabe usar el eval?
  #5 (permalink)  
Antiguo 03/10/2012, 18:24
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 7 meses
Puntos: 1485
Respuesta: Hacer que una pagina realice el submit de un formulario que esta en otra p

te recomendaría que mientras puedas evitar todos los derivados de evaluación, evítalo: eval, setTimeout y setInterval en forma de string, Function. lo que tienes que hacer es simple.
Código:
if(xmlHttp.responseText == "cerrado") form.submit();
else { ... }
ahí se compara si el estado es "cerrado", en dicho caso se envía el formulario.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 06/10/2012, 20:32
 
Fecha de Ingreso: junio-2012
Mensajes: 30
Antigüedad: 12 años, 5 meses
Puntos: 1
Respuesta: Hacer que una pagina realice el submit de un formulario que esta en otra p

Muchas gracias a todos, al final utilice un script que me encontré en el foro, dejare el link por si alguien le sucede algo similar:

http://www.forosdelweb.com/f127/howto-ejecutar-javascript-que-viene-ajax-510438/
  #7 (permalink)  
Antiguo 06/10/2012, 23:08
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 13 años, 4 meses
Puntos: 32
Respuesta: Hacer que una pagina realice el submit de un formulario que esta en otra p

En vez de hacer eval, sería mejor crear un elemento tipo script y a esta darle un innerHTML con el script que deseas ejecutar, finalmente lo insertas en el body y se evaluará tu script.

Ejemplo:
Código Javascript:
Ver original
  1. var script = document.createElement("script");
  2. script.innerHTML = "alert(1)";
  3. document.body.appendChild(script);


Pero en definitiva yo me iría a lo que dice zerokilled, es mejor recibir un estado o valor que índique que hacer en vez de recibir un script que evaluar.

Ya si es necesario recibir varios estados o valores hay que utilizar JSON.

Ejemplo

En tu archivo PHP que recibe la petición (php.php):
Código PHP:
Ver original
  1. <?php
  2.  
  3. $output = array(
  4.     "estado" => 0,
  5.     "mensaje" => "Hola mundo!",
  6.     "funcion" => "miFuncion",
  7. );
  8.  
  9. echo json_encode($output);
  10. // '{"estado" : 0, "mensaje" : "Hola mundo!", "funcion" : "miFuncion"}'
En tu archivo que hace la petición:
Código HTML:
Ver original
  1.     var misFunciones = {
  2.         miFuncion: function(msj){alert(msj);},
  3.         miOtraFuncion: function(){/*...*/}
  4.     };
  5.     $.get("php.php", function(stringJSON){
  6.         var resultado = $.parseJSON(stringJSON);
  7.         // Aquí ya puedes obtener los valores de "resultado" como las propiedades de un objeto
  8.         if ( ! resultado.estado ) {
  9.             misFunciones[resultado.funcion](resultado.mensaje);
  10.         }
  11.     });
Observa :), saludos!

Última edición por IXtremeLT; 06/10/2012 a las 23:28

Etiquetas: actualizado, formulario, 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 18:26.