Comunidad de diseño web y desarrollo en internet online

procesar 2 formularios con ajax desde una misma pagina

Citar            
MensajeEscrito el 03 Mar 2009 09:11 pm
hola a todos, soy nuevo en cuanto a ajax se trata y se me ha presentado la siguiente duda: es posible mostrar en una misma pagina (con el uso de ajax) dos formularios?

lo que se quiere es que desde el menu de la pagina index.php se haga el llamado de calcular.php (con ajax sin recargar la pagina en un <div1>), al estar ubicado en el calcular.php hago un calculo de un presupuesto y al darle click en el boton calcular me calcula el presupuesto y me muestra el resultado en el formulario mostrar.php (lo que quiero es mostrarlo en un <div2> del index.php).

mi duda es si se puede hacer todo esto desde index.php usando ajax para llamar los dos formularios, ejemplo:

selecciono opcion menu --> carga el calcular.php en <div1> en index.php
hago los calculos y al darle click en el boton calcular se muestra los resultados en mostrar.php en <div2> de index.php

todo esto para no recargar la pagina

no se si es algo complicado, espero por favor me ayuden con esta duda y gracias de antemano

Por usuario_13

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Mar 2009 05:53 am
claro que se puede...

si te fija bien podras notar que la ejecucion de las funciones de ajax las podes hacer con el onClick de cada boton de cada formulario.... por eso cuando tu formulario en el div1 este formulario que muestras debe tener en su boton enviar (no submit) en su onClick="ejecutar_la_segunda_funcion()"

y como a cada funcion le tenes asignado el div al que le va hacer el innerHTML=ajax.responseText; no ahy lio de ninguna parte

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 04 Mar 2009 01:03 pm
hola y buenos dias, muchas gracias por la respuesta, voy a realizar las pruebas con la informacion que me diste y cuando lo tenga completamente funcional publico el codigo para el que lo quiera usar.

muchas gracias y saludos

Por usuario_13

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Mar 2009 02:03 pm
muy bien

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox
Citar            
MensajeEscrito el 09 Mar 2009 09:46 pm
hola a todos, voy a publicar lo que he hecho hasta ahora con respecto a procesar dos formularios en una misma pagia con ajax y php. al final del codigo voy a preguntar una duda que le he dado la vuelta y nada. espero por favor me ayuden y gracias de antemano.

codigo:

index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript" src="ajax.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>
<ul>
<li><a title="opcion1" href="javascript:Enviar('primeraopcion.php', 'contenido')">opcion1</a></li>
<li><a title="opcion2" href="javascript:Enviar('segundaopcion.php', 'contenido')">opcion2</a></li>
<li><a title="opcion3" href="javascript:Enviar('calcular.php', 'contenido')">Calcular</a></li>
</ul>
<div id="contenido"></div>
</body>
</html>

Calcular.php:

<script type="text/javascript" src="ajax.js"></script>
<form name="form1" id="form1" method="post" enctype="multipart/form-data">
<table width="421" height="333" border="0" align="center">
<tr>
<td height="25" colspan="2">Introduzca la Tipo:
<label>
<input type="text" name="tipo_producto" id="tipo_producto" value="<?php print $tipo_producto ?>">
</label></td>
</tr>
<tr>
<td height="25" colspan="2">Introduzca la Cantidad:
<label>
<input type="text" name="cantidad" id="cantidad" value="<?php print $cantidad ?>">
</label></td>
</tr>
<tr>
<td colspan="2">Seleccione el Color:
<label>
<select name="color" id="color">
<option selected value="0"></option>
<option value="1">Un color</option>
<option value="2">Dos colores</option>
<option value="3">Tres colores</option>
<option value="4">Full color</option>
</select>
<a title="Calcular" href="javascript:Cargarcontenido('mostrar.php', 'c=3', 'form1', 'contenido2')">Calcular</a>
</label></td>
</tr>
</table>
</form>
<br />
<div id="contenido2"></div>

Mostrar.php:

<?php
include '../shared/class_folder/calcular_presupuesto.php';
?>
<form name="form2" id="form2" method="post" enctype="multipart/form-data">
<table width="390" height="154" border="0" align="center">
<tr>
<td height="27">Sutotal:
<label>
<input type="text" name="subtotal" value="<?php printf("%.2f",$subtotal); ?>">
</label></td>
</tr>
<tr>
<td height="30">total:
<label>
<input type="text" name="total" value="<?php printf("%.2f",$total); ?>">
</label></td>
</tr>
</table>
</form>

calcular_presupuesto.php:

<?php
if($_REQUEST["c"]==3){

..realizo los calculos..

}
?>

ajax.js:

// JavaScript Document

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

function Enviar(_pagina,capa) {
var ajax;
ajax = ajaxFunction();

ajax.open("POST", _pagina, true);

ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function()
{

if (ajax.readyState == 4)
{
if (ajax.status==200)
{
document.getElementById(capa).innerHTML = ajax.responseText;

}}}
ajax.send(null);
}

function Cargarcontenido(_pagina,seccion,formid,capa) {
var ajax;
var Formulario = document.getElementById(formid);
var longitudFormulario = Formulario.elements.length;
var cadenaFormulario = "";
var sepCampos;
sepCampos = "";
for (var i=0; i <= Formulario.elements.length-1;i++) {
cadenaFormulario += sepCampos+Formulario.elements[i].name+'='+encodeURI(Formulario.elements[i].value);
sepCampos="&";
}
ajax = ajaxFunction();

ajax.open("POST", _pagina, true);

ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function()
{

if (ajax.readyState==1)
{
document.getElementById(capa).innerHTML = "";
}
if (ajax.readyState == 4)
{
if (ajax.status==200)
{
document.getElementById(capa).innerHTML = ajax.responseText;

}}}
ajax.send(cadenaFormulario+"&"+seccion);
}

todo esto funciona a la perfeccion, al hacer click en la opcion calcular del index.php me carga el calcular.php en <div contenido> introduzco mis datos y al darle click a la opcion calcular me carga en <div contenido2> el mostrar.php con los calculos correctos, todo esto sin recargar la pagina index.php (gracias a ajax).

mi problema surge cuando en el calcular.php deseo utilizar un checkbox, aparentemente la funtion Cargarcontenido() presente en ajax.js que es la que se encarga de obtener los datos del formulario (especificamente en el for) toma todos los checkbox como seleccionado (checked) asi no los esten, y eso altera el resultado de mis calculos.

agradeceria cualquier ayuda por favor porq he indagado mucho y no encuentro informacion que me sirva.
gracias de antemano

Por usuario_13

12 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.