2012-12-04 11 views
11

Czy ciąg tekstowy JavaScript może zawierać 100 000 znaków? Napisałem skrypt, w którym łańcuch z PHP jest przekazywany do zmiennej w JavaScript. Działa dobrze, gdy jest skracany do prawie dziesięciu tysięcy znaków, ale łamie skrypt przy próbie przekazania całego łańcucha, którego długość jest nieco większa niż 100K. Nie można jednak znaleźć błędów. Czy istnieje jakikolwiek sposób na zwiększenie limitu znaków w zmiennej JavaScript? Jestem tylko początkującym. Byłbym wdzięczny, że ktoś mógłby znaleźć rozwiązanie tego problemu.Limit znaków zmiennej łańcuchowej javascript

+0

Co masz na myśli "łamie scenariusz"? – Xymostech

+2

Zobacz http://stackoverflow.com/questions/5926263/javascript-object-max-size-limit dla niektórych istotnych informacji. Domyślam się, że limit jest w PHP, a nie w JS. – jfriend00

+3

Otwórz konsolę JS i spróbuj sam. 'str =" "; dla (var i = 0; i <100000; i ++) {str = str + "x"; } 'następnie wpisz' str' i naciśnij enter. Zobacz co się dzieje. –

Odpowiedz

7

Nie ma teoretycznego ograniczenia dla JS lub PHP w odniesieniu do rozmiaru ich ciągów.

Myślę, że jest kilka możliwych sytuacji.

Po pierwsze, sprawdź, czy nie wysyłasz ciągu znaków przez HTTP GET. Istnieje maksymalna wielkość GET i myślę, że zależy to od twojego serwera WWW.

Po drugie, jeśli korzystasz z POST, sprawdź w php.ini dla post_max_size i sprawdź, czy jest on mniejszy niż rozmiar ciągu wysyłanego do niego, jak również plik .htacccess, aby sprawdzić, czy php_value post_max_size nie jest zbyt mały .

Po trzecie, sprawdź w pliku php.ini, czy limit pamięci nie ogranicza rozmiaru pamięci używanej przez skrypt.

mam nadzieję, że to pomoże.

+0

Dziękuję za odpowiedź. Napisałem javascript na tej samej stronie php i przypisuję zmienną php do zmiennej javascript na tej samej stronie. Jeśli echo zmiennej widzę wyjście, ale raz przypisane do js nic nie zostanie wykonane poniżej tego. – Rohith

+0

Po prostu ujęcie, ale czy zregenerowałeś pojedyncze cytaty lub podwójne cudzysłowy, które mogą spowodować zerwanie twojego js. czy uciekłeś przed przejściem do js? Czy wystąpił błąd w konsoli javascript? –

+0

Nie ma błędu w konsoli javascript. Żadne pojedyncze i podwójne cudzysłowy nie są zregenerowane. – Rohith

16

Standardowy ECMA-262 ECMAScript (wydanie 6, czerwiec 2015) mówi

6.1.4 Typ String

typ String jest zbiorem wszystkich uporządkowanych ciągów zero lub więcej 16-bitowa bez znaku wartości całkowite ("elementy") do maksymalnej długości 2 -1 elementy.

Więc nie planuj używać więcej niż 9,007,199,254,740,991 lub około 9 biliardów znaków. Oczywiście powinieneś być przygotowany na systemy, które nie mogą przydzielić 18 porcji PB, ponieważ nie jest to wymagane do implementacji ECMAScript.

Powiązane problemy