Bueno, descubrí que no es por el array, como no hago llamadas simultáneas no lo necesito, pero ahora me apareció otro problema, resulta que tengo el siguiente código en html y asp:
Código HTML:
sql_suscripciones = "SELECT * FROM suscripcion"
Set rs_suscripciones = Server.CreateObject("ADODB.Recordset")
rs_suscripciones.ActiveConnection = MM_news_STRING
rs_suscripciones.Source = sql_suscripciones
rs_suscripciones.CursorType = 1
rs_suscripciones.CursorLocation = 2
rs_suscripciones.LockType = 1
rs_suscripciones.Open()
<select name="suscripciones" class="tb5" id="suscripciones" onChange="activacomplemento();">
<option value="0" selected>Seleccione una</option>
<%
rs_suscripciones.movenext
do while not rs_suscripciones.eof
%>
<option value="<%=rs_suscripciones("id_suscripcion")%>"><%=rs_suscripciones("nombre")%></option>
<%
varredim = cint(rs_suscripciones("id_suscripcion"))+1
redim preserve descripciones(varredim)
descripciones(varredim-1) = rs_suscripciones("descripcion")
rs_suscripciones.movenext
loop
%>
</select>
Lo que hago es mostrar al usuario los tipos de suscripciones disponibles:
1 - Demostracion
2 - Instantánea y única
3 - Por número de sesiones
4 - Por periodo de tiempo
5 - Dominical
Cuando selecciono una opcion llamo a la función activacomplemento(), que despliega otro select para escoger el número de sesiones, en caso tal que la opción seleccionada sea la 3, o el número de meses que el usuario quiere que dure la suscripción en caso de ser seleccionadas las opciones 4 o 5. Además, le debe mostrar al usuario una descripción de la suscripción seleccionada.
Esta es la función activacomplemento()
Código HTML:
function activacomplemento()
{
if(document.getElementById("suscripciones").value == 3)
{
document.getElementById("complemento").innerHTML = "Número de consultas desadas:";
document.getElementById("consultas").style.display = "";
document.getElementById("consultas").disabled = false;
document.getElementById("meses").style.display = "none";
document.getElementById("meses").disabled = true;
}
else if(document.getElementById("suscripciones").value == 4 || document.getElementById("suscripciones").value == 5)
{
document.getElementById("complemento").innerHTML = "Número de meses que durará la suscripción:";
document.getElementById("meses").style.display = "";
document.getElementById("meses").disabled = false;
document.getElementById("consultas").style.display = "none";
document.getElementById("consultas").disabled = true;
}
else
{
document.getElementById("complemento").innerHTML = "";
document.getElementById("meses").style.display = "none";
document.getElementById("meses").disabled = true;
document.getElementById("consultas").style.display = "none";
document.getElementById("consultas").disabled = true;
}
var id_suscripcion = document.getElementById("suscripciones").value;
alert(id_suscripcion);
if (!enProceso && http) {
var url = "descripcion.asp?id_suscripcion="+id_suscripcion;
alert(url);
http.open("GET", url, true);
alert(http.readyState);
http.onreadystatechange = handleHttpResponse;
enProceso = true;
http.send(null);
}
}
Para mostrar la descripción hago una llamada al script descripcion.asp, que me devuelve dos parámetros, el número de funcion que debe manejar el resultado, y el resultado pertinente dentro de una misma cadena, pero separados por comas.
2,resultadodelaconsulta
La funcion handleHttpResponse es la siguiente
Código HTML:
function handleHttpResponse() {
if (http.readyState == 4) {
if (http.status == 200) {
if (http.responseText.indexOf('invalid') == -1) {
// Armamos un array, usando la coma para separar elementos
results = http.responseText;
alert(results);
enProceso = false;
http.close;
manejaresultados(results);
}
}
}
}
function getHTTPObject() {
if(navigator.appName == 'Microsoft Internet Explorer') {
http = new ActiveXObject('Microsoft.XMLHTTP');
} else {
http = new XMLHttpRequest();
}
return http;
}
var enProceso = false;
var http = getHTTPObject();
function manejaresultados(results)
{
results1 = results;
temp = results1.split(",");
if(temp[0] == 1)
{formulario1(results1);}
if(temp[0] == 2)
{formulario2(results1);}
}
function formulario2(results)
{
results1 = results.split(",");
alert (results1);
document.getElementById("descripcion").innerHTML = results1[1];
}
En este caso particular uso la funcion formulario2, y funciona perfecta, excepto cuando selecciono la opcion 4 o 5. En IE me muestra un error de javascript que dice:
pero en firefox no me dice nada, todo sale perfecto, alguna sugerencia en cuanto al motivo que hace que la cosa no funcione como deberia en IE?