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

Una duda sobre varios llamados

Estas en el tema de Una duda sobre varios llamados en el foro de Frameworks JS en Foros del Web. Hola, Bien, pues estoy empezando a usar ajax, y me asalta una duda, he visto que para llamadas simultáneas se debe instanciar un array de ...
  #1 (permalink)  
Antiguo 12/11/2006, 16:43
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años, 8 meses
Puntos: 2
Pregunta Una duda sobre varios llamados

Hola,

Bien, pues estoy empezando a usar ajax, y me asalta una duda, he visto que para llamadas simultáneas se debe instanciar un array de objetos xmlhttprequest, pero no creo haber entendido bien. Lo que yo estoy haciendo es poner un formulario en la página que valida los datos ingresados por el usuario, si estan correctos, cambia los textbox por etiquetas div y activa otro formulario en la parte inferior de la página, pero cuando voy a enviar los datos de ese formulario, me aparece un error, y no me devuelve nada... eso es por no haber creado el array?
__________________
'Esto va a salir mal de todos modos, asi que no vale la pena estresarse por eso.' Tony Kakko.
  #2 (permalink)  
Antiguo 12/11/2006, 18:26
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 7 meses
Puntos: 35
loading..............


pueden muchas razones, menos la que nombras.
porque no pegas el codigo?



connection closed.
__________________

Maborak Technologies
  #3 (permalink)  
Antiguo 13/11/2006, 09:55
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años, 8 meses
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.
  #4 (permalink)  
Antiguo 13/11/2006, 15:52
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 7 meses
Puntos: 35
loading...........



donde te marca error?

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);
}

antes o despues de:
results = http.responseText;
alert(results);


si es, despues. de eso

results1 = results.split(",");
alert (results1);
document.getElementById("descripcion").innerHTML = results1[1];

segura que existe results1[1]?


connection closed.


connection closed.
__________________

Maborak Technologies
  #5 (permalink)  
Antiguo 13/11/2006, 17:15
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años, 8 meses
Puntos: 2
Retomemos... la cosa esta en que terminé cambiando el metodo de get a post porque leyendo y leyendo en Internet, encontré que el método get suele ser problemático a veces para usar AJAX. Ahora tengo otro problema...

Yo trabajo con asp, pero resulta, que cuando voy a querer enviar por el método post los datos me sale un error en la linea que menos me lo hubiera esperado...

Código HTML:
var url = "descripcion.asp";
var parametros ='id_suscripcion='+id_suscripcion;
        http.setRequestHeader('Content-Type','application/x-www-form-urlencoded');// ---> Aquí me sale el error, y dice "error desconocido"        
       http.open("POST", url, true);
       http.send(parametros);
       http.onreadystatechange = function()
    {
        if (http.readyState==4)
        {
            results = http.responseText
        }
    }
No se porque, llegue a pensar que es porque el archivo descripcion.asp tiene algunas cabeceras para evitar la caché, pero se las quité y aún así sigue sin funcionar, tendrá algo que ver con la configuración del IIS?

no se si le estoy enviando mal las cabeceras, o es porque e
__________________
'Esto va a salir mal de todos modos, asi que no vale la pena estresarse por eso.' Tony Kakko.
  #6 (permalink)  
Antiguo 13/11/2006, 18:05
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años, 8 meses
Puntos: 2
Ya pude solucionarlo!!, es que yo soy como medio lenteja, pero bueno, lo importante es que como estaba usando el mismo objeto para hacer una llamada por metodo get y hacer la del método post, no me estaba funcionando, entonces cree otro objeto aparte y ahi si no molesta para nada la cosa... muchisimas gracias de todas formas MaBoRaK, el tutorial de leimnud me sirvio para darme cuenta de cositas...
__________________
'Esto va a salir mal de todos modos, asi que no vale la pena estresarse por eso.' Tony Kakko.
  #7 (permalink)  
Antiguo 13/11/2006, 18:31
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 7 meses
Puntos: 35
loading..........


bueno :D
en el caso de GET siempre usa una variable random, de esa forma no actuara mas el caché.

var url = "descripcion.asp?rand="+Math.random();


connection closed.
__________________

Maborak Technologies
  #8 (permalink)  
Antiguo 14/11/2006, 09:48
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años, 8 meses
Puntos: 2
Otro problema, pero al recoger los datos

Bien, entre mas avanzo mas cosas raras aparecen. Pues resulta que ya tenia solucionado lo del envío de datos por post, al hacer el envío lo que me devolvía era una cadena de texto extraida de mi base de datos, pero ahora, debo tomar de la base de datos para devolver junto con la cadena, algunos valores que usan decimales, algo asi como 0,5 y 40,5 por poner un ejemplo. El script ASP está devolviendo los valores porque ya lo probé individualmente, pero cuando llegan a javascript, la descripción aparece sin ningún problema, pero los valores decimales se convierten automáticamente en 0 (ceros), y no tengo la más mínima idea de porque. Estoy haciendo un cstr(variable), a las dos variables numéricas decimales antes de devolverlas de ASP, pero nada parece funcionar... alguna idea al respecto?
__________________
'Esto va a salir mal de todos modos, asi que no vale la pena estresarse por eso.' Tony Kakko.
  #9 (permalink)  
Antiguo 14/11/2006, 11:06
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Prueba a devolver los números decimales con punto en lugar de coma.
  #10 (permalink)  
Antiguo 14/11/2006, 13:37
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años, 8 meses
Puntos: 2
Ya habia probado eso también y no me funciona... que será???
__________________
'Esto va a salir mal de todos modos, asi que no vale la pena estresarse por eso.' Tony Kakko.
  #11 (permalink)  
Antiguo 14/11/2006, 14:57
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años, 8 meses
Puntos: 2
Bueno, retomando, la cosa va en que estoy multiplicando los valores por mil antes de enviarlos, pero ni asi, me sigue recibiendo cero... alguna otra idea?
__________________
'Esto va a salir mal de todos modos, asi que no vale la pena estresarse por eso.' Tony Kakko.
  #12 (permalink)  
Antiguo 14/11/2006, 15:11
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 7 meses
Puntos: 35
loading........



bueno siempre MUESTRA LA PARTE DE CODIGO QUE CREES QUE FALLA :p

si recibes un valor con ,

var a= "0,76";

le haces alguna operacion? como 98+a;

o

parseInt(0,76)?

en ese caso siempre te devolvera 0

pero si tratas ese valor todo el tiempo como una CADENA nunca cambiara su valor.



connection closed.
__________________

Maborak Technologies
  #13 (permalink)  
Antiguo 14/11/2006, 15:58
Avatar de KarenFerreira  
Fecha de Ingreso: abril-2005
Ubicación: Bucaramanga, Colombia
Mensajes: 87
Antigüedad: 19 años, 8 meses
Puntos: 2
Oki doki, solucionado... gracias!
__________________
'Esto va a salir mal de todos modos, asi que no vale la pena estresarse por eso.' Tony Kakko.
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 04:44.