2012-12-04 6 views
11

Kann JavaScript String 100K Zeichen speichern? Ich habe ein Skript geschrieben, in dem eine Zeichenfolge aus PHP an eine Variable in JavaScript übergeben wird. Es funktioniert einwandfrei, wenn es auf fast zehntausend Zeichen gekürzt wird, bricht jedoch das Skript, wenn versucht wird, die gesamte Zeichenfolge zu übergeben, deren Länge etwas größer als 100 KB ist. Es konnten jedoch keine Fehler gefunden werden. Gibt es eine Lösung dafür, wie die Zeichengrenze der JavaScript-Variablen erhöht werden kann? Ich bin nur ein Anfänger. Würde mich freuen, jemand könnte eine Lösung dafür finden.Zeichenlimit einer JavaScript-String-Variablen

+0

Was meinen Sie "bricht das Skript"? – Xymostech

+2

Siehe http://stackoverflow.com/questions/5926263/javascript-object-max-size-limit für einige relevante Informationen. Ich schätze, das Limit liegt in PHP, nicht in JS. – jfriend00

+3

Öffnen Sie die JS-Konsole und versuchen Sie es selbst. 'str =" "; für (var i = 0; i <100000; i ++) {str = str + "x"; } 'dann tippe" str "und drücke Enter. Schau was passiert. –

Antwort

7

Es gibt keine theoretische Beschränkung für JS oder PHP auf die Größe ihrer Strings.

Ich denke, es gibt ein paar mögliche Situationen.

Überprüfen Sie zuerst, dass Sie Ihre Zeichenfolge nicht über HTTP GET senden. Es gibt eine maximale Größe für GET und ich denke, es hängt von Ihrem Webserver ab. Zweitens, wenn Sie POST verwenden, überprüfen Sie in der php.ini nach post_max_size und sehen Sie, ob es kleiner ist als die String-Größe, die Sie senden, sowie Ihre .htaccess-Datei zu sehen, ob php_value post_max_size nicht zu klein ist .

Drittens prüfen, ob in der php.ini, die Ihre memory_limit nicht die Größe des Speichers nicht einschränkt, die das Skript verwenden kann.

hoffe das hilft.

+0

Vielen Dank für Ihre Antwort. Ich habe das Javascript in der gleichen PHP-Seite geschrieben und ich ordne die PHP-Variable einer Javascript-Variable auf der gleichen Seite zu. Wenn ich die Variable stimme, kann ich die Ausgabe sehen, aber sobald sie js zugewiesen wurde, wird nichts darunter ausgeführt. – Rohith

+0

nur ein Schuss, aber haben Sie irgendwelche einfachen Anführungszeichen oder doppelte Anführungszeichen neu generiert, die Ihre js brechen können. bist du ihnen entkommen, bevor du zu js gegangen bist? Gibt es einen Fehler in der JavaScript-Konsole? –

+0

Es gibt keinen Fehler in JavaScript-Konsole. Es werden auch keine einfachen und doppelten Anführungszeichen neu generiert. – Rohith

16

Der ECMAScript-Standard ECMA-262 (6. Ausgabe Juni 2015) sagt

6.1.4 Der String Typ

Der String-Typ ist die Menge aller geordneten Sequenzen von null oder mehr 16-Bit ohne Vorzeichen ist ganzzahlige Werte ("Elemente") bis zu einer maximalen Länge von 2 -1 Elemente.

Also nicht mit mehr als 9.007.199.254.740.991 oder etwa 9 Billiarden Zeichen. Natürlich sollten Sie auf Systeme vorbereitet sein, die nicht 18 PB Speicherbausteine ​​zuordnen können, da dies für konforme ECMAScript-Implementierungen nicht erforderlich ist.

Verwandte Themen