AJAX - Problema con combos en ajax y asp

   
Vista:

Problema con combos en ajax y asp

Publicado por Santi (1 intervención) el 22/02/2011 16:18:09
Un cordial saludo.
Quisiera pedir ayuda con este problema.
Estoy haciendo un formulario d'entrada en ASP con dos combos dependientes y para cargar el segundo utilizo unas funciones en ajax que he encontrado hechas y las he adaptado.
Esto funciona correctamente y el segundo combo se carga bien cuando hago la selección del primero, pero el problema es que después de hacer la carga del segundo combo me desparece del formulario, no sale en la cadena que envia el formulario, ni puedo ver el "value" del combo en la función de validació.
Cuando intento leerlo con " if (document.form1.localitat.value==""), etc..... " no responde y se cuelga.

Es como si no existiera en el formulario, pero funciona i puedo actualizarlo tantas veces como quiera.
Agradeceria si alguien puede ayudarme..... yo no entiendo mucho de ajax.

Muchas gracias y un cordial saludo

Adjunto el còdigo

Esta es la fila de la tabla, dentro del form, donde pongo els egundo combo inicialmente
--------------------------------------------------------------------------------------------------------
<tr>
<td class="ctexte">Localitat:</td>
<td id="fila_2" class="tddades">
<select class="ccomarca" id="localitat" disabled="disabled" name="localitat" style="width:220px;">
<option value="0">----</option>
</select>(*)
</td>
</tr>
------------------------------------------------------------------------------

Estas son las funciones ajax
----------------------------------------------------------------------------------------------------------------
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 carregaloc()
{
var valor=document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value;
if(valor==0)
{
combo=document.getElementById("localitat");
combo.length=0;
var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="----";
combo.appendChild(nuevaOpcion);
combo.disabled=true;
}
else
{
ajax=nuevoAjax();
ajax.open("GET", "consultalocalitats.asp?seleccionado="+valor, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{
combo=document.getElementById("localitat");
combo.length=0;
var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Carregant dades...";
combo.appendChild(nuevaOpcion);
combo.disabled=true;
}
if (ajax.readyState==4)
{
document.getElementById("fila_2").innerHTML=ajax.responseText;
}
}
ajax.send(null);
}
}
-----------------------------------------------------------------------------------------------------------------------

Este el archivo ASP que busca los datos del combo 2 en la base de datos
---------------------------------------------------------------------------------------------------------
<%
Function validaValor(parametro)
' Funcion utilizada para validar el numero de pais recibido por GET. En nuestra base
If parametro >= 1 AND parametro <= 41 then
validaValor = true
Else
validaValor = false
End if
End Function

valor = Request.QueryString("seleccionado")
if(validaValor(valor)) Then
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open server.MapPath("/mdb-database/dadesweb.mdb")
set rsloc=Server.CreateObject("ADODB.Recordset")'
sql="select * from localitats where codicomarca=" & valor '"'"& valor &"'"
rsloc.Open sql,conn,3,1

' Comienzo a imprimir el select
rsloc.movefirst
response.Write "<select class=""ccomarca"" id=""localitat"" name=""localitat"">"
While Not rsloc.EOF
' Imprimo las opciones del select
'response.Write "<option value=""pepe"">" & Server.HtmlEncode(rsloc.fields("localitat")) & "</option>"
response.Write "<option value=""" & rsloc.fields("localitat") & """>" & Server.HtmlEncode(rsloc.fields("localitat")) & "</option>"
rsloc.MoveNext
Wend
response.Write "</select>"

rsloc.Close
Set rsloc = Nothing
Conn.Close
Set Conn = Nothing
End if
%>
--------------------------------------------------------------------------------------------------------------
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