Foros del Web » Programando para Internet » Javascript »

Enviar variables largas por GET o POST

Estas en el tema de Enviar variables largas por GET o POST en el foro de Javascript en Foros del Web. Buenas, saludos a todos Tengo un problema y tengo algunas alternativas para solucionarlo, pero no creo que sean muy buenas ideas, así que vengo a ...
  #1 (permalink)  
Antiguo 27/01/2011, 11:54
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Enviar variables largas por GET o POST

Buenas, saludos a todos

Tengo un problema y tengo algunas alternativas para solucionarlo, pero no creo que sean muy buenas ideas, así que vengo a preguntar si alguien tiene una buena idea de como hacerlo:

Resulta que tengo una especie de blog donde el usuario puede publicar comentarios, estos comentarios son enviados por una variables (GET o POST cualquiera me sirve) al servidor por medio de AJAX.

Todo funciona bien pero el problema se produce cuando se escriben mas de 1500 caracteres en la entrada del blog, aparece un mensaje de error indicando que el servidor no permite variables tan largas o mejor dicho no permite URLS tan largas:

The requested URL's length exceeds the capacity limit for this server.

Entre mis opciones esta la de partir el texto en varios fragmentos y subirlos uno por uno, pero no me parece muy buena idea

Alguna idea?
  #2 (permalink)  
Antiguo 27/01/2011, 12:43
Avatar de goteen_mx  
Fecha de Ingreso: abril-2005
Ubicación: D.F.
Mensajes: 403
Antigüedad: 19 años
Puntos: 37
Respuesta: Enviar variables largas por GET o POST

Con post no deberías de tener problemas,

Puedes poner tu código??

Salu2
  #3 (permalink)  
Antiguo 27/01/2011, 13:03
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Enviar variables largas por GET o POST

Este es el código, recorre todo el formulario buscando objetos y los agrega a una cadena como GET y luego carga la pagina (AJAX) así el usuario no se entera de nada de lo ocurrido.

Código Javascript:
Ver original
  1. url = "frm_name=" + frm_name;
  2. for (i = 0; i < frm.elements.length; i++) {
  3.     frm.elements[i].disabled = true;
  4.     if (frm.elements[i].type == "checkbox") {
  5.         if (frm.elements[i].checked)
  6.             frm.elements[i].value = 1;
  7.         else
  8.             frm.elements[i].value = 0;
  9.     }
  10.     if (frm.elements[i].type == "radio") {
  11.         if (frm.elements[i].checked){
  12.             url = url + "&" + frm.elements[i].name + "=" + escape(frm.elements[i].value);
  13.         }
  14.     }else{
  15.         url = url + "&" + frm.elements[i].name + "=" + escape(frm.elements[i].value);
  16.     }
  17. }
  18. GET_xmlhttp.open("GET", http + ".php?" + url, true);

Para hacerlo por POST se me complica un poco, no se enviar variables POST en AJAX, alguien sabe?

goteen_mx +1karma
  #4 (permalink)  
Antiguo 27/01/2011, 13:20
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Enviar variables largas por GET o POST

asi envias por POST en ajax

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     function ajaxFunction() {
  3.         var xmlHttp;
  4.         try {
  5.             // Firefox, Opera 8.0+, Safari
  6.             xmlHttp = new XMLHttpRequest();
  7.             return xmlHttp;
  8.         }
  9.         catch (e) {
  10.             // Internet Explorer
  11.             try {
  12.                 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
  13.                 return xmlHttp;
  14.             }
  15.             catch (e) {
  16.                 try {
  17.                     xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  18.                     return xmlHttp;
  19.                 }
  20.                 catch (e) {
  21.                     alert("Tu navegador no soporta AJAX!");
  22.                     return false;
  23.                 }
  24.             }
  25.         }
  26.     }
  27.  
  28.     function fajax(parametro) {
  29.         var url = "miURL.aspx";              //página que se debe cargar en el lenguaje q quieras PHP, ASP, .NET, etc...
  30.         var contenedor = "cargaAjax";  //id div a recargar
  31.         var ajax = ajaxFunction();
  32.         if (!ajax) {
  33.             alert("No se puede ejecutar este proceso: Error de navegador");
  34.             return false;
  35.         }
  36.  
  37.         document.getElementById(contenedor).innerHTML = "Cargando...";
  38.        
  39.         //indico q por POST envio variables a url
  40.         ajax.open("POST", url, true);
  41.  
  42.         ajax.onreadystatechange = function () {
  43.             if (ajax.readyState == 4 && (ajax.status == 200 || window.location.href.indexOf("http") == -1)) {
  44.                 //aqui escribo lo que quiera procesar.... por ejemplo
  45.                 parametro = parametro + 1000;
  46.             }
  47.         }
  48.         ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  49.         //envio la variable que quiera
  50.         ajax.send("parametro=" + parametro);
  51.     }                
  52. </script>


fajax la llamas al enviar el formulario....

esto no va en este foro, es ajax :/
  #5 (permalink)  
Antiguo 27/01/2011, 13:49
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Enviar variables largas por GET o POST

Funciono sin ningún problema con POST, mi jefe y clientes estan felices, gracias a ambos!

javiercitox +1 karma
  #6 (permalink)  
Antiguo 27/01/2011, 14:03
 
Fecha de Ingreso: diciembre-2009
Ubicación: Valparaíso
Mensajes: 118
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Enviar variables largas por GET o POST

mientras se pueda ayudar, no hay problema (Y)

Última edición por javiercitox; 01/02/2011 a las 07:57

Etiquetas: enviar, post, variables
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:34.