Re: [PHP-ES] Enviar datos a pagina JSP via POST y redireccionar a la misma
[email protected] ("J. Mauro Daino")
| Newsgroups | php.general.es |
|---|---|
| Message-ID | <CAF60FfB5QpVtqtcKuO2CjGmyBYyNGChf3Dun2e6OyYeJmX+jjg@mail.gmail.com> |
Esperemos que se entienda:
=IDEA1=============================================================pagina0.*
-------------------------------------------------------------------------------------------------------------------------------------
<form action="pagina1.php" method="POST">
Nombre <input name="firstname">
Apellido <input name="lastname">
...
<input type="submit" name="Enviar">
</form>
-------------------------------------------------------------------------------------------------------------------------------------
pagina1.php
-------------------------------------------------------------------------------------------------------------------------------------
<?php
//logica de negocio (que genera los valores a pasar a JSP: $valor1 y
$valor2)
?>
<form action="pagina2.jsp" method="POST">
Debes confirmar tu orden:
Nombre <input name="name" readonly>
...
<input type="hidden" name="valor1" value="<?php echo $valor1; ?>">
<input type="hidden" name="valor2" value="<?php echo $valor2; ?>">
<input type="submit" name="Confirmar">
</form>
-------------------------------------------------------------------------------------------------------------------------------------
pagina2.jsp
-------------------------------------------------------------------------------------------------------------------------------------
<%
//logica de negocio o lo que sea que hagas aca
%>
-------------------------------------------------------------------------------------------------------------------------------------
=IDEA2=============================================================pagina0.*
-------------------------------------------------------------------------------------------------------------------------------------
<form action="pagina1.php" method="POST">
Nombre <input name="name">
Apellido <input name="lastname">
...
<input type="submit" name="Enviar">
</form>
-------------------------------------------------------------------------------------------------------------------------------------
pagina1.php (esta pagina debiera ser lo mas simple posible; si el cliente
no
tiene JS aun funciona solo que lo hace según la idea 1)
-------------------------------------------------------------------------------------------------------------------------------------
<?php
//logica de negocio (que genera los valores a pasar a JSP: $valor1 y
$valor2)
?>
<form action="pagina2.jsp" method="POST" id="confirm_form">
Debes confirmar tu orden:
Nombre <input name="name" readonly>
Apellido <input name="lastname" readonly>
...
<input type="hidden" name="valor1" value="<?php echo $valor1; ?>">
<input type="hidden" name="valor2" value="<?php echo $valor2; ?>">
<input type="submit" name="Confirmar">
</form>
<script>document.getElementById('confirm_form').submit();</script>
-------------------------------------------------------------------------------------------------------------------------------------
pagina2.jsp
-------------------------------------------------------------------------------------------------------------------------------------
<%
//logica de negocio o lo que sea que hagas aca
%>
-------------------------------------------------------------------------------------------------------------------------------------
=IDEA3=============================================================pagina0.*
(código AJAX tomado desde
http://www.tufuncion.com/tutorial_basico_ajax y modificado bastante; si el
ciente no tiene activado JavaScript esta idea falla rotundamente)
-------------------------------------------------------------------------------------------------------------------------------------
<script>
function nuevoAjax(){
var xmlhttp=false;
try{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e){
try{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E){
xmlhttp=false;
}
}
if(!xmlhttp&&typeof XMLHttpRequest!='undefined') {
xmlhttp=new XMLHttpRequest();
}
return xmlhttp;
}
function cargarContenido(){
var t1,t2,contenedor;
contenedor=document.getElementById('contenedor');
datos_post=''+
'firstname='+document.getElementById('pedido_form_nombre_input').value+
'&lastname='+document.getElementById('pedido_form_apellido_input').value+
//...
'';
ajax=nuevoAjax();
ajax.open("POST","pagina1.php",true);
ajax.onreadystatechange=function(){
if(ajax.readyState==4){
datos=eval(ajax.responseText);
document.getElementById('valor1').value=datos.valor1;
document.getElementById('valor2').value=datos.valor2;
document.getElementById('pedido_form').submit();
}
}
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("t1="+t1+"&t2="+t2);
}
</script>
<form action="pagina2.jsp" method="POST" id="pedido_form">
Nombre <input name="firstname" id="pedido_form_nombre_input">
Apellido <input name="lastname" id="pedido_form_apellido_input">
...
<input type="hidden" name="valor1" value="">
<input type="hidden" name="valor2" value="">
<input type="button" name="Enviar" onclick="cargarContenido();">
</form>
-------------------------------------------------------------------------------------------------------------------------------------
pagina1.php (esta pagina no puede tener nada antes del inicio de PHP y
devolvera
código JSON y no HTML)
-------------------------------------------------------------------------------------------------------------------------------------
<?php
ini_set('display_errors',0);
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Pragma: no-cache');
header('Content-type: application/json');
//logica de negocio (que genera los valores a pasar a JSP: $valor1 y
$valor2)
$salida=array(
'valor1'=>$valor1,
'valor2'=>$valor2
);
$salida=json_encode($salida);
exit($salida);
?>
-------------------------------------------------------------------------------------------------------------------------------------
pagina2.jsp
-------------------------------------------------------------------------------------------------------------------------------------
<%
//logica de negocio o lo que sea que hagas aca
%>
-------------------------------------------------------------------------------------------------------------------------------------
===================================================================
Las tres ideas son muy mejorables pero la base esta. El fallo de la tercer
idea se podría salvar haciendo que el form inicialmente sea como en la idea
dos, via JavaScript convertirlo en la tres y desde la pagina .php detectar
si es AJAX (http://craftyman.net/detectar-peticiones-ajax-con-php/) o no y
devolver JSON si es o el HTML de la idea dos si no.
Además esta la opción cURL (http://ar2.php.net/manual/en/book.curl.php) pero
ojo que con ese método el cliente no va a estar mirando la pagina .jsp nunca
y si esta ultima espera recibir un ciente logueado puede que te metas en un
flor de despelote.
Míralo despacito y suerte.
--
J. Mauro Daino (tcc: jMd/jMdZ)
google.com/profiles/maurodaino