Foros del Web » Programando para Internet » ASP Clásico »

Envio de una cadena

Estas en el tema de Envio de una cadena en el foro de ASP Clásico en Foros del Web. Hola de nuevo... Quizá este tema lo relacionen con alguno que ya haya posteado anteriormente, pero es conforme va evolucionando mi aplicación, voy preguntando. De ...
  #1 (permalink)  
Antiguo 16/06/2010, 16:14
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Envio de una cadena

Hola de nuevo... Quizá este tema lo relacionen con alguno que ya haya posteado anteriormente, pero es conforme va evolucionando mi aplicación, voy preguntando. De antemano pido disculpas a los moderadores, por si creen que estoy repitiendo temas.

Ahora tengo un problema "multiplataforma", y lo detallo para darme a entender mejor:

Tengo una aplicación en asp que me genera una serie de cadenas desde una consulta sql server. Está consulta me trae n cadenas que proceso en una función y obtengo un resultado por cada una de las cadenas obtenidas.

Ahora bien, lo que me está haciendo ruido, es que esas cadenas debo enviarlas mediante ajax a una página en dónde tengo la función que las procesa y el resultado lo voy a imprimir en una serie de DIV´s en mi página principal. Lo que sucede es que al generar las cadenas, las pongo en una variable "nombre_carpeta" (la cual puede traer n cadenas), y trato de enviarlas, pero al retornar el resultado, descubro que sólo me toma la primer cadena generada. Anexo el código:

Código:
Set Conn = Server.CreateObject("ADODB.Connection")
Set Ors = Server.CreateObject("ADODB.Recordset")
Set Ins = Server.CreateObject("ADODB.Recordset")
Conn.open = "DSN=cnx;UID=javier;PWD=manzano;DATABASE=EDUC06K"
Ors.open "Select... From.. Where...", Conn
Do While not Ors.eof
	'nombre_carpeta = Ors("Archivo") 
	nm = Ors("Archivo") 
	nombre_carpeta = nombre_carpeta & nm & "," & "<br />"
	nm = ""
	cantidad = Ors("Cantidad")
	r = r + cantidad
	%>
	<form action='post'>
		<input type='hidden' name='nombre_carpeta' id='nombre_carpeta' value="<%=nombre_carpeta%>" />
	</form>
	<%
	Ors.movenext
Loop
Ors.Close
set fs=nothing
for i=0 to (r-1)
	response.Write("<div id='campoMensaje"&i&"' align='center'></div>")
Next
y envio con la siguiente función:
Código:
<script>
	verificaUsuario()
</script>
Código:
<script language="javascript" type="text/javascript">

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.split(",");
			 //document.getElementById("campoMensaje").innerHTML = results[0];
			 for(var cont=0; cont<=9; cont++)
				{
					document.getElementById("campoMensaje"+cont.toString()).innerHTML = results[cont];
				}
             enProceso = false;
          }
       }
    }
}

function verificaUsuario()
{
    if (!enProceso && http)
	{
	   var valor = escape(document.getElementById("nombre_carpeta").value);
       var url = "consulta.asp?nombre_carpeta="+ valor;
	   //top.document.write(valor);
       http.open("GET", url, true);
       http.onreadystatechange = handleHttpResponse;
       enProceso = true;
       http.send(null);
    }
}

function getHTTPObject() 
{
    var xmlhttp;
    /*@cc_on
    @if (@_jscript_version >= 5)
       try {
          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
       } catch (e) {
          try {
             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (E) { xmlhttp = false; }
       }
    @else
    xmlhttp = false;
    @end @*/
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') 
	{
       try 
	   {
          xmlhttp = new XMLHttpRequest();
       } catch (e) { xmlhttp = false; }
    }
    return xmlhttp;
}

var enProceso = false; // lo usamos para ver si hay un proceso activo
var http = getHTTPObject(); // Creamos el objeto XMLHttpRequest

</script>
¿Alguién tiene una ídea de cómo puedo hacerlo?
  #2 (permalink)  
Antiguo 17/06/2010, 07:33
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Envio de una cadena

Hola

Ejecuta por separado consulta.asp, ya que no tiene muy buena pinta, y verás cual es la respuesta, o usa FireBug como ya te comenté.

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 17/06/2010, 09:35
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Envio de una cadena

Cuando ejecuto por separado consulta si funciona a la perfección, ya que es sólo un recorrido de un variable....

En firebug, no me aparece nada fuera de lo normal, pero también he de comentarte que acabo de conocerlo , así que no sé en dónde me puede marcar qué es lo que está enviando mi variable... es uno más de los retos que tengo...

A fuerza de ser veraz, he de decir que creo que mi error es en el envio mediante el ajax...
  #4 (permalink)  
Antiguo 17/06/2010, 12:10
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Envio de una cadena

Hola

Abre el FireBug. En la solapa Consola verás algo como (+ GET url). Click en el "+". Aparecerán varias solapas (Parámetros, Respuesta, ...)
+ Parámetros (los parámetros que enviastes)
+ Respuesta (la respuesta que se está recibiendo)

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 17/06/2010, 14:45
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Envio de una cadena

Gracias Adler, he lo encontrado en DOM - results

Me manda sólo una cadena, la primera de las n que obtengo en la consulta....

si en mi asp obtengo 10 cadenas diferentes, al momento de enviarlas mediante ajax, me manda 10, pero sólo toma en cuenta la primera... Investigaré qué sucede y te cuento que resultados obtuve.....

  #6 (permalink)  
Antiguo 17/06/2010, 16:26
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Envio de una cadena

Ya me di cuenta de lo que estoy haciendo mal, es lo siguiente:

Código:
Ors.open "SELECT top 10 ... FROM ... WHERE...", Conn
Do While not Ors.eof
nm = Ors("Archivo")
nombre_carpeta = nombre_carpeta & nm & "," & "<br />"
nm = ""
cantidad = Ors("Cantidad")
r = r + cantidad
%>
<form action='post'>
	<input type='hidden' name='nombre_carpeta' id='nombre_carpeta' value="<%=nombre_carpeta%>" />
</form>
<script>
	verificaUsuario()
</script>

<%
Ors.movenext
Loop
Al imprimir lo que estoy enviando que es lo que en el código de arriba tengo marcado, me arroja lo siguiente:

/content/mde/UDCPSXXI001P/22522/237_ME_462_2107200490351.doc,
/content/mde/UDCPSXXI001P/22523/Sociedad planetaria.doc,
/content/mde/UDCPSXXI001P/22524/Ética y nuestro entorno.doc,
/content/mde/UDCPSXXI001P/22525/7saberes.zip,
/content/mde/UDCPSXXI001P/22526/237_ME_2_09072004132054.pdf,
/content/mde/UDCPSXXI001P/22527/237_ME_364_09072004114530.pdf,
/content/mde/UDCPSXXI002P/22531/240_ME_1_22072004191637.exe,
/content/mde/UDCPSXXI002P/22532/240_ME_1_23072004210032.avi,
/content/mde/UDCPSXXI002P/22533/240_ME_1_24072004140941.pdf,
/content/mde/UDCPSXXI002P/22534/240_ME_1_24072004141005.pdf,

/content/mde/UDCPSXXI001P/22522/237_ME_462_2107200490351.doc,
/content/mde/UDCPSXXI001P/22523/Sociedad planetaria.doc,
/content/mde/UDCPSXXI001P/22524/Ética y nuestro entorno.doc,
/content/mde/UDCPSXXI001P/22525/7saberes.zip,
/content/mde/UDCPSXXI001P/22526/237_ME_2_09072004132054.pdf,
/content/mde/UDCPSXXI001P/22527/237_ME_364_09072004114530.pdf,
/content/mde/UDCPSXXI002P/22531/240_ME_1_22072004191637.exe,
/content/mde/UDCPSXXI002P/22532/240_ME_1_23072004210032.avi,
/content/mde/UDCPSXXI002P/22533/240_ME_1_24072004140941.pdf,
/content/mde/UDCPSXXI002P/22534/240_ME_1_24072004141005.pdf,

... y esto 8 veces más

que son las 10 cadenas, pero como las concateno, me arroja toda la concatenación como una sola (lógico ) y me está tomando hasta que encuentra la primer coma(,), y por esa razón me manda la primer cadena diez veces....

La situación es que no sé de qué manera poder enviar una sola...

He hecho las siguientes adecuaciones al código de la siguietne manera:

Código:
Do While not Ors.eof
	nombre_carpeta = Ors("Archivo")
	cantidad = Ors("Cantidad")
	r = r + cantidad
	%>
	<form action='post'>
		<input type='hidden' name='nombre_carpeta' id='nombre_carpeta' value="<%=nombre_carpeta%>" />
	</form>
	<script>
		verificaUsuario()
	</script>
	<%
	Ors.movenext
Loop
Pero me sigue tomando sólo la primer cadena...

¿Ideas?

Última edición por JavierMMM; 17/06/2010 a las 17:26

Etiquetas: envio, cadenas
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 07:37.