Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/06/2010, 16:20
Avatar de JavierMMM
JavierMMM
 
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 16 años, 3 meses
Puntos: 0
Pregunta ¿Cómo enviar un array mediante ajax?

Hola foreros, tengo una duda.

Estoy realizando una consulta a mi BD de la cual obtengo cadenas, que son en sí, las rutas de direcciones físicas en mi server. Son cerca de 10 mil cadenas diferentes, ya que cada una es la ruta de un archivo diferente.

Lo que necesito hacer es, enviar este vector mediante ajax, de mi página archivo.asp a proceso.asp. Ya puedo enviar una sola variable, pero necesito enviar el array, y lo trato de hacer de esta manera:
Código HTML:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Prueba Ajax</title>
<%
<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];
             enProceso = false;
          }
       }
    }
}

function verificaUsuario() 
{
    if (!enProceso && http) 
	{
       var valor = escape(document.getElementById("arreg(i)").value);
       var url = "proceso.asp?arreg(i)="+ 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>

Ors.open "SELECT TOP 10 A.Id, A.Archivo FROM C_MATERIAL A LEFT JOIN C_CURSOS B ON (A.id = B.id) WHERE (YEAR(A.fechainicio) >= 2009) AND A.Id NOT IN (Select Id_Archivo From X_Respaldo) GROUP BY A.Id, Archivo ORDER BY Archivo", Conn 
	Do While not Ors.eof
		nombre_carpeta = Ors("Archivo")
                
                Redim arreg(10000)
		
		for i=0 to Ors.eof
			arreg(i) = nombre_carpeta
		Next 
		%>
		<form method="post" >
			<input type="hidden" name="arreg(i)" id="arreg(i)" value="<%=arreg(i)%>" >
		</form>
		<div id="campoMensaje"></div>
		<%
		Ors.movenext
	Loop
	Ors.Close
	set fs=nothing

%>

</body>
</html>

<SCRIPT>
verificaUsuario();
</SCRIPT> 
y en mi página de proceso la recibo de esta manera:
Código HTML:
nombre_carpeta = request.querystring("nombre_carpeta")
y ya sigo con un proceso de la cadena.... pero con el array, a pesar de que no marca error, no hace nada.

¿Alguién sabe cómo puedo hacerle para que mande el array?

Gracias de antemano