Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/11/2006, 09:55
Avatar de KarenFerreira
KarenFerreira
 
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años, 1 mes
Puntos: 2
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:

Cita:
Línea : 10
Car : 11
Error : System error : -1072896748
Codigo : 0
url : http://localhost/enewspaper/suscripcion.asp
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?
__________________
'Esto va a salir mal de todos modos, asi que no vale la pena estresarse por eso.' Tony Kakko.