2011-08-05 12 views
7

Używam CKEditor formatowania niektóre dane w moim textareaHTTP Error 414. Żądanie URL jest zbyt długi

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

Teraz, gdy próbuję pisać te dane przy użyciu jQuery.ajax takiego,

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

Wystąpił błąd

Błąd HTTP 414. URL żądania jest za długi.

Dostaję błąd tutaj: http://iranfairco.com/example/errorLongUrl.aspx
kliknij na Edit Text przycisk w lewym dolnym rogu tej strony.

Dlaczego tak się dzieje? Jak mogę to rozwiązać?

+0

Cóż, dodaje się ** tony ** tekstu do adresu URL. Adres URL nie jest przeznaczony do obsługi tego. Powinieneś wysłać tekst w treści POST, zamiast próbować umieścić go w adresie URL. –

+0

Miłość, którą publikujesz, ale to naprawdę jest GET. :) – epascarello

Odpowiedz

17

Zgodnie z this question maksymalna długość użyteczna adresu URL wynosi 2000 znaków. Nie będzie w stanie pomieścić ogromnego artykułu z Wikipedii, który próbujesz przesłać.

Zamiast umieszczać dane na adresie URL, należy umieścić go w treści żądania POST. Musisz dodać wartość data do obiektu, który przekazujesz do wywołania funkcji ajax. W ten sposób:

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

w jaki sposób można odbierać dane (o) w 'allCommand.aspx' – ashkufaraz

+0

mogę uzyskać to przez żądanie [" o "] – ashkufaraz

+0

, gdy allcommand zwróci więcej niż 20000 znaków, a następnie ... $ .ajax ({ adres URL:" Allcammand .aspx? cmd = getAbout & idCompany = "+ getParam (" idCompany "), asynchroniczne: false, sukces: funkcja (odpowiedź) {alert (odpowiedź); } }); – ashkufaraz

0

W moim przypadku błąd został zgłoszony, mimo że korzystałem z "POST", a połączenie z serwerem zakończyło się sukcesem. Okazało się, że brakowało mi atrybut dataType ... Dziwne, ale teraz to działa

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

W moim przypadku nastąpił błąd czasu tuż przed wywołaniem pocztowym. Naprawienie go rozwiązało problem.

Błąd wykonania próbował odczytać $('#example').val() gdzie nie istnieje element $('#example') (tj. undefined).

Jestem pewien, że to na pewno pomoże komuś.

Powiązane problemy