2011-08-05 26 views
7

estoy usando CKEditor para dar formato a algunos datos dentro de mi textareaError HTTP 414. El URL de solicitud es demasiado largo

<textarea id="editorAbout" rows="70" cols="80" name="editorAbout"></textarea> 

Ahora cuando intento publicar estos datos usando jQuery.ajax como este,

var about=escape($("#editorAbout").text()); 
      $.ajax({ 
      type: "POST", 
      url: "../Allcammand.aspx?cmd=EditAboutCompany&about="+about, 
      type:"post", 
       async: false , 
        success: function(response){          

        }, 
        error:function(xhr, ajaxOptions, thrownError){alert(xhr.responseText); } 
      }); 

Recibo el error

HTTP Error 414. La URL de solicitud es demasiado larga.

estoy consiguiendo el error aquí: http://iranfairco.com/example/errorLongUrl.aspx
intente hacer clic en el botón Editar texto en la parte inferior izquierda de la página.

¿Por qué sucede esto? ¿Cómo puedo resolverlo?

+0

Bueno, usted agrega ** toneladas ** de texto a la URL. La URL no está diseñada para manejar eso. Debe enviar el texto en el cuerpo del POST en lugar de tratar de ponerlo en la URL. –

+0

Me encanta lo que publicas, pero realmente es un OBJETIVO. :) – epascarello

Respuesta

17

Según this question, la longitud práctica máxima de una URL es de 2000 caracteres. Esto no va a poder contener un artículo masivo de Wikipedia como el que está tratando de enviar.

En lugar de poner los datos en la URL, debe colocarlos en el cuerpo de una solicitud POST. Necesita agregar un valor data al objeto que está pasando a la llamada a la función ajax. De esta manera:

function editAbout(){ 

    var about=escape($("#editorAbout").text()); 
    $.ajax({ 
     url: "Allcammand.aspx?cmd=EditAboutCompany&idCompany="+getParam("idCompany"), 
     type:"post", 
     async: false, 
     data: { 
      about: about 
     }, 
     success: function(response){          
     }, 
     error:function(xhr, ajaxOptions, thrownError){alert(xhr.responseText); ShowMessage("??? ?? ?????? ??????? ????","fail");} 
    }); 
} 
+0

cómo puedo recibir datos (sobre) en 'allCommand.aspx' – ashkufaraz

+0

puedo obtener esto por solicitud [" sobre "] – ashkufaraz

+0

cuando allcommand retrunde más de 20000 caracteres luego ... $ .ajax ({ url:" Allcammand .aspx? cmd = getAbout & idCompany = "+ getParam (" idCompany "), async: falso, éxito: función (respuesta) {alerta (respuesta); } }); – ashkufaraz

0

En mi caso, el error se levantó a pesar de que estaba usando 'POST' y la llamada al servidor fue exitosa. Resultó ser que me estaba perdiendo el atributo de tipo de datos ... extraño, pero ahora funciona

  return $.ajax({ 
      url: url, 
      type: 'POST', 
      dataType: 'json', 
      data: JSON.stringify(data) 
     }) 
1

En mi caso, hubo un error en tiempo de ejecución justo antes de la llamada posterior. Solucionarlo resolvió el problema.

El error de tiempo de ejecución intentaba leer $('#example').val() donde el elemento $('#example') no existe (es decir, undefined).

Estoy seguro de que esto, sin duda, ayudará a alguien.

Cuestiones relacionadas