Najlepsza metoda zadawania pytań, jaką kiedykolwiek widziałem.
Andrés Morales
Odpowiedzi:
59
Zależy to od metody wysłania formularza.
W przypadku GET istnieje powszechnie uzgodniony limit około 1-2 kilobajtów, w zależności od ograniczeń przeglądarki i serwera.
W przypadku POST nie ma ograniczeń technicznych w przeglądarce, ale zwykle po stronie serwera - patrz np. Apache LimitRequestBody, PHP post_max_sizei tak dalej.
Uważaj na problemy wskazane przez @naugtur poniżej dla pól wprowadzania tekstu - przynajmniej w przypadku tych, istnieją ograniczenia techniczne narzucone przez różne przeglądarki.
Oliver
Właśnie przeprowadziłem testy na 3 nieco aktualnych przeglądarkach (IE9, FF 10 ESR, Chrome 24) i wszystkie bez problemu przesłały ukryte wartości wejściowe 100 KB. Więc problemy z wprowadzaniem tekstu wydają się nie mieć tutaj zastosowania.
Oliver
textareaa co z s?
Francisco Corrales Morales,
@FranciscoCorralesMorales nie ma znaczenia, jakiego typu jest pole wejściowe - liczy się wynik końcowy, suma wszystkich wysyłanych danych
Pekka
Okazało się, że Safari obcięło ukryte dane wejściowe. Użycie pola tekstowego rozwiązało problem.
Brendon Muir,
29
Ostrzeżenie! Mam problemy z <input type="text">tekstem dłuższym niż 65535 (maksymalny rozmiar int ze znakiem)
Wydaje się, że wklejenie tekstu powoduje dziwne przepełnienie treści. Zauważono w pakiecie internetowym.
[edytować]
Rozmiar żądania GET nie jest dokładnie ograniczony tak, jak napisał Pekka. Cały ciąg zapytania GET jest ograniczony do 2083 bajtów tylkoaddress?params w przeglądarce Internet Explorer.
W innych przeglądarkach praktycznie nie ma ograniczeń, na przykład FireFox wysyła zapytania GET o wielkości ponad 100 KB. Oczywiście serwer musi na to zezwolić.
Nie jest to opisane w dokumentacji, więc trzeba to przetestować, aby poznać ograniczenia dla innych przeglądarek. IE: http://support.microsoft.com/kb/208427
+1 Stworzyłem ten jsFiddle, aby sprawdzić, co się stanie, gdy ustawisz wartość wejściową na bardzo długi ciąg: jsfiddle.net/3TVPL/6 Użyłem łańcucha o długości 65537 znaków. W moich testach Crome 24.0.1312 i Safari 5.1.7 dla Windows oba pokazują pola wejściowe jako puste po ustawieniu wartości na ten ciąg. Chrome pokazuje właściwą niepustą wartość, jeśli zredukuję ciąg do 65536 znaków. Inne przeglądarki (Firefox 17, IE8, IE9, IE10, Opera 12.12) nie miały już dużo problemów nawet ze stringami (awansowałem do około 1,2 Mb string)
beluga
@beluga świetna robota. jakieś przemyślenia na temat wydajności? Na mojej słabej maszynie trzeba było długo czekać. Myślę, że dlatego webkit tego nie renderuje.
naugtur
Może dobra uwaga. W tym czasie nie przeprowadzałem żadnych testów wydajności. Mam w pracy dość wypasioną maszynę i nie zauważyłem żadnych opóźnień w żadnej z przeglądarek.
beluga
To sprawiło, że mój FF był bezużyteczny przez około 5 minut. Umieszczanie tego w polu formularza i tak nie jest dobrym pomysłem :)
naugtur
Mobilne przeglądarki i serwery proxy mogą również obcinać ukryte pola
Odpowiedzi:
Zależy to od metody wysłania formularza.
W przypadku GET istnieje powszechnie uzgodniony limit około 1-2 kilobajtów, w zależności od ograniczeń przeglądarki i serwera.
W przypadku POST nie ma ograniczeń technicznych w przeglądarce, ale zwykle po stronie serwera - patrz np. Apache
LimitRequestBody
, PHPpost_max_size
i tak dalej.źródło
textarea
a co z s?Ostrzeżenie! Mam problemy z
<input type="text">
tekstem dłuższym niż 65535 (maksymalny rozmiar int ze znakiem)Wydaje się, że wklejenie tekstu powoduje dziwne przepełnienie treści. Zauważono w pakiecie internetowym.
[edytować]
Rozmiar żądania GET nie jest dokładnie ograniczony tak, jak napisał Pekka. Cały ciąg zapytania GET jest ograniczony do 2083 bajtów tylko
address?params
w przeglądarce Internet Explorer. W innych przeglądarkach praktycznie nie ma ograniczeń, na przykład FireFox wysyła zapytania GET o wielkości ponad 100 KB. Oczywiście serwer musi na to zezwolić.Nie jest to opisane w dokumentacji, więc trzeba to przetestować, aby poznać ograniczenia dla innych przeglądarek. IE: http://support.microsoft.com/kb/208427
źródło