Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problemas con 2 forms y Ajax en PHP

Estas en el tema de Problemas con 2 forms y Ajax en PHP en el foro de Frameworks JS en Foros del Web. Estimado amigos tengo el siguiente problema veran tengo una pagina php 2 forms el 1er form hace una peticion ajax y un archivo php, obtengo ...
  #1 (permalink)  
Antiguo 03/03/2010, 19:13
 
Fecha de Ingreso: febrero-2010
Mensajes: 11
Antigüedad: 14 años, 2 meses
Puntos: 0
Problemas con 2 forms y Ajax en PHP

Estimado amigos tengo el siguiente problema veran tengo una pagina php 2 forms el 1er form hace una peticion ajax y un archivo php, obtengo en 5 divs lo que requiero sin problemas, ahora mas abajo de la pagina php con el 2do form hago otra peticion con ajax a otro archivo php y requiero en otro div la respuesta que tomo un text del primer div como dato y obtengo todos los datos de la primera peticion ajax. Es decir se repite en el div los valores de la 1ra peticion.


<script type="text/javascript"src="Scripts/zxml.js"></script>
<script type="text/javascript"src="ajaxventaActual.js"></script>
<script type="text/javascript" src="ajaxvenCam.js"></script>
<form name="envia" id="envia" method="POST" action="ingVentaCamara.php" onsubmit="sendRequest(this.form); return false">

con este form hago la primera peticion.

<input name="Solicitud" type="text" id="Solicitud" accesskey="S" tabindex="1" size="10" maxlength="10" />

<input name="Confirma" type="submit" class="textoc" id="Confirma" accesskey="c" value="Ok." />

</form>
<div id="divStatus"></div>

ahora el 2do form

<form name="genera" id="genera" method="POST" action="actualValor.php" onsubmit="devuelveValor(this.form); return false">

inputs donde pongo valores nuevos....

<td height="20" class="textoc"><input name="SolicitudA" type="hidden" id="Sol" value="document.envia.Solicitud.value" onkeyup="envia.Solicitud.value=genera.SolicitudA.v alue"/></td>

<input name="button" type="submit" class="textoc" id="button" accesskey="C" tabindex="6" value="Confirmar" onclick="document.genera.SolicitudA.value=
document.envia.Solicitud.value"/>

con esto obtengo el valor del Text del 1er form y hago la 2da peticion

</form>
<div id="ValStatus"></div>
y termino aqui


ahora el codigo ajax de ajaxventaActual.js

function devuelveValor() {
var aForm = document.forms[0];
var sBody = getRequestBody(aForm);

var aXHR = zXmlHttp.createRequest();
aXHR.open("post", aForm.action, true);
aXHR.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

aXHR.onreadystatechange = function () {
if (aXHR.readyState == 4) {
if (aXHR.status == 200) {
//saveResult(oXHR.responseText);
var ValStatus = document.getElementById("ValStatus");
var ValFinal = document.getElementById("ValFinal");
var valores = aXHR.responseText;
//var resfinal = resultA.split('--');
ValStatus.value=valores;
ValStatus.innerHTML = "Se Crearon los valores Correctamente i:";
ValFinal.innerHTML = valores;
} else {
saveResult("ha Ocurrido un Error: " + aXHR.statusText);
}
}
};
aXHR.send(sBody);
}

//("document.getElementById("mydiv").innerHTML = ''").

function encodeNameAndValue(sName, sValue) {
var sParam = encodeURIComponent(sName);
sParam += "=";
sParam += encodeURIComponent(sValue);
return sParam;
}

function getRequestBody(aForm) {

//array to hold the params
var aParams = new Array();

//get your reference to the form
var aForm = document.forms[0];

//iterate over each element in the form
for (var i=0 ; i < aForm.elements.length; i++) {

//get reference to the field
var aField = aForm.elements[i];

//different behavior based on the type of field
switch (aField.type) {

//buttons - we don't care
case "button":
case "submit":
case "reset":
break;

//checkboxes/radio buttons - only return the value if the control is checked.
case "checkbox":
case "radio":
if (!aField.checked) {
break;
} //End: if

//text/hidden/password all return the value
case "text":
case "hidden":
case "password":
aParams.push(encodeNameAndValue(aField.name, aField.value));
break;

//everything else
default:

switch(aField.tagName.toLowerCase()) {
case "select":
aParams.push(encodeNameAndValue(aField.name, aField.options[aField.selectedIndex].value));
break;
default:
aParams.push(encodeNameAndValue(aField.name, aField.value));
}
}

}

return aParams.join("&");
}


ahora el codigo ajax de ajaxvenCam.js

function sendRequest() {
var oForm = document.forms[0];
var sBody = getRequestBody(oForm);

var oXHR = zXmlHttp.createRequest();
oXHR.open("post", oForm.action, true);
oXHR.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

oXHR.onreadystatechange = function () {
if (oXHR.readyState == 4) {
if (oXHR.status == 200) {
//saveResult(oXHR.responseText);
var divStatus = document.getElementById("divStatus");
var divAg=document.getElementById("divAg");
var divFSol = document.getElementById("divFSol");
var divCant = document.getElementById("divCant");
var divTipo = document.getElementById("divTipo");
var divFormPag=document.getElementById("divFormPag");
var divTotal = document.getElementById("divTotal");
var resultado = oXHR.responseText;
var result=resultado.split(';');
//divStatus.value=result[0];
//divAg.value=result[1];
//divCant.value=result[2];
//divTipo.value=result[3];
//divFormPag.value=result[4];
divStatus.innerHTML = "Transaccion se completo correctamente";
divAg.innerHTML = result[1];
divFSol.innerHTML = result[2];
divCant.innerHTML = result[3];
divFormPag.innerHTML = result[5];
divTipo.innerHTML = result[4];
divTotal.innerHTML = result[6];

} else {
saveResult("ha Ocurrido un Error: " + oXHR.statusText);
}
}
};
oXHR.send(sBody);
}


function encodeNameAndValue(sName, sValue) {
var sParam = encodeURIComponent(sName);
sParam += "=";
sParam += encodeURIComponent(sValue);
return sParam;
}

function getRequestBody(oForm) {

//array to hold the params
var aParams = new Array();

//get your reference to the form
var oForm = document.forms[0];

//iterate over each element in the form
for (var i=0 ; i < oForm.elements.length; i++) {

//get reference to the field
var oField = oForm.elements[i];

//different behavior based on the type of field
switch (oField.type) {

//buttons - we don't care
case "button":
case "submit":
case "reset":
break;

//checkboxes/radio buttons - only return the value if the control is checked.
case "checkbox":
case "radio":
if (!oField.checked) {
break;
} //End: if

//text/hidden/password all return the value
case "text":
case "hidden":
case "password":
aParams.push(encodeNameAndValue(oField.name, oField.value));
break;

//everything else
default:

switch(oField.tagName.toLowerCase()) {
case "select":
aParams.push(encodeNameAndValue(oField.name, oField.options[oField.selectedIndex].value));
break;
default:
aParams.push(encodeNameAndValue(oField.name, oField.value));
}
}

}

return aParams.join("&");
}


y no se donde esta mal la cosa que me tiene hace tiempo que no lo resuelvo por que se repite como les digo los datos de la primera peticion. Ha con los archivos Php los he revisado y creo que no tengo problemas si es necesario para que lo entiendan me avisan y los pongo tambien
Gracias de antemano
  #2 (permalink)  
Antiguo 04/03/2010, 00:09
 
Fecha de Ingreso: mayo-2006
Mensajes: 288
Antigüedad: 18 años
Puntos: 4
Respuesta: Problemas con 2 forms y Ajax en PHP

wow ensalada de codigos :(
  #3 (permalink)  
Antiguo 04/03/2010, 17:39
 
Fecha de Ingreso: febrero-2010
Mensajes: 11
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Problemas con 2 forms y Ajax en PHP

Lo voy a simplificar el problema que estoy viendo es que envio un submit con el primer Form y procesa normal y el problema esta cuando envio el 2do submit desde el segundo formulario y procesa el archivo del 1er formulario y me envia los datos del primer proceso y no a si del segundo.
Como puedo enviar el 2do submit y que me reconosca el archivo php destino y lo procese logicamente.
ayudeme please!!!!
  #4 (permalink)  
Antiguo 05/03/2010, 10:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Tema movido desde PHP a AJAX

Etiquetas: ajax, forms, php
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 22:42.