AJAX - Formularios multiples en ajax

   
Vista:

Formularios multiples en ajax

Publicado por Bruno Chávez (1 intervención) el 31/03/2009 22:44:39
Hola a todos

Tengo un grave problema, tengo un formulario que maneja producto (P), Categoria (C), Subcategoria (subp) y cantidad (A), y como es un catalogo de productos puede tener multiples forms o uno solo, cuando le doy click al boton de agregar, el ajax me recibe lo que le envio por valor a la funcion, pero cuando hago el document.getElementByID no obtiene el real seleccionado, sino el anterior que tenia, es decir, no importa en que articulo este, siempre será la misma subcategoria... dejen les pongo los codigos:

Primero del catalogo donde llamo al Ajax:

<?
while (!$rsRes->EOF) {
$IDC = $rsRes->fields["Producto"];

$sSQL = "SELECT * FROM Productos WHERE ID=$IDC";

$rsProd = $DB->Execute($sSQL);

if (!$rsProd->EOF) {
$Titulo = $rsProd->fields["Titulo"];
$Foto = $rsProd->fields["Foto"];
$Descripcion = $rsProd->fields["Descripcion"];
$Precio = $rsProd->fields["Precio"];
$IDP = $rsProd->fields["ID"];
$SKUPadre = $rsProd->fields["SKUPadre"];
$SKU = $rsProd->fields["SKU"];
if ($SKUPadre == "") {
?>
<tr>
<td>
<form method="post" name="frmArt<?=$IDP?>">
<table align="center" width="100%" class="caja">
<tr>
<td colspan="2" class="titulo_busca"><div align="center"><?=$Titulo?></div></td>
</tr>
<tr>
<td colspan="2" class="titulo_busca"> </td>
</tr>
<tr>
<td width="30%" class="titulo_busca"><div align="center"><img src="img/productos/<?=$Foto?>" width="180" height="135" border="0"><br /><div align="center" class="titulomain">$<?=number_format($Precio, 2, ".", ",")?></div></div></td>
<td width="70%" class="titulo_busca"><div align="justify"><span class="titulo_carrito"><?=$Descripcion?></span><br>
<br>
<table width="200" border="0" align="center" cellpadding="0" cellspacing="0" bordercolor="#ADD8E6" class="caja">
<?php
$sSQL = "SELECT * FROM Productos WHERE SKUPadre = '$SKU'";

$rsSub = $DB->Execute($sSQL);

if (!$rsSub->EOF) {
?>
<tr>
<td bgcolor="#ADD8E6"><span class="titulomain">Por favor, seleccione un artículo:</span></td>
</tr>
<tr>
<td bgcolor="#ADD8E6" ><select name="subp" id="subp">
<?php while (!$rsSub->EOF) {
$IDS = $rsSub->fields["ID"];
$Titulo = $rsSub->fields["Titulo"];
?>
<option value="<?=$IDS?>"><?=$Titulo?></option>
<?php
$rsSub->MoveNext();
}
?>
</select></td>
</tr>
<?php } else {?>
<tr>
<td>
<select name="subp" id="subp">
<option value="0" selected> </option>
</select>
</td>
</tr>
<? } ?>
<tr>
<td valign="top" bgcolor="#ADD8E6"><div class="titulomain">
<div align="center">Cantidad:
<input name="Cantidad" type="text" id="Cantidad" value="1" size="5"><br />
<input name="agregar" type="button" id="agregar" value="agregar" onClick="showProd(<?=$IDP?>,<?=$C?>, this.options[this.selectedindex].value);" src="fimages/boton_agregar.jpg">
</div>
</div></td>
</tr>
</table>
<br>
</div></td>
</tr>
</table>
</form>
</td>
</tr>
<tr>
<td class="titulo_busca"> </td>
</tr>
<?
}
}
$rsRes->MoveNext();
}
?>

Como ven, aqui solamente genero un catalogo con multiples forms, donde si existen subcategorias me hace un select y si no, lo hace vacio, esto lo puse para ver si el error se corregia... ahora el ajax que recibe es este:

// JavaScript Document

// Inicia codigo Ajax
var xmlHttp

function GetXmlHttpObject() {
var xmlHttp=null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
} catch (e) {
// Internet Explorer
try {
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}

function showProd(IDP, C){
xmlHttp=GetXmlHttpObject();
if (xmlHttp==null) {
alert ("Su navegador no soporta AJAX, actualicelo para poder comprar.!");
return;
}
var url="agregaprod.php";
url = url + "?P=" + IDP;
url = url + "&C=" + C;
url = url + "&A=" + document.getElementById('Cantidad').value + "&S=" + document.getElementById('subp').value + "&sid="+Math.random();
alert(url);
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}

function stateChanged() {
if (xmlHttp.readyState == 1) {
var ss = document.getElementById('minicarrito')
ss.innerHTML = '';
var suggest = '<div id="minicarrito" class="titulo_carrito"><br /> Agregando producto...</div>';
ss.innerHTML += suggest;
}
if (xmlHttp.readyState == 2) {
var ss = document.getElementById('minicarrito')
ss.innerHTML = '';
var suggest = '<div id="minicarrito class="titulo_carrito""><br /> Agregando producto...</div>';
ss.innerHTML += suggest;
}
if (xmlHttp.readyState == 3) {
var ss = document.getElementById('minicarrito')
ss.innerHTML = '';
var suggest = '<div id="minicarrito" class="titulo_carrito"><br /> Agregando producto...</div>';
ss.innerHTML += suggest;
}
if (xmlHttp.readyState == 4) {
var ss = document.getElementById('minicarrito')
ss.innerHTML = '';
var str1 = xmlHttp.responseText;
var suggest = '<div id="minicarrito" class="titulo_carrito">' + str1 + '</div>';
ss.innerHTML += suggest;
}
}

bueno, pues el alert me devuelve datos ilogicos...

Ya no le encuentro el error y recurro a ustedes para ver si me pueden ayudar...

Les agradezco mucho,
Bruno Chávez
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
información
Otras secciones de LWP con contenido de AJAX
- Código fuente de AJAX
- Cursos de AJAX
- Temas de AJAX
información
Códigos de AJAX
- Autocompletar
- Actualizar página
- Editor para pagina Web

RE:Formularios multiples en ajax

Publicado por kikonmx (16 intervenciones) el 15/10/2009 00:15:05
te recomiendo que te descargues el firebug que es un depurador para usarse con firefox. esto te será de gran ayuda para encontrar el problema
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