2012-12-04 63 views
11

JavaScript字符串能存儲100K個字符嗎? 我寫了一個腳本,其中來自PHP的字符串被傳遞給JavaScript中的變量。它在縮短到近一萬個字符時運行良好,但在嘗試傳遞長度超過100K的整個字符串時會中斷腳本。沒有錯誤可以被發現。對於增加JavaScript變量字符限制的方法,有沒有解決方法?我只是一個初學者。希望有人能找到解決方案。javascript字符串變量的字符限制

+0

你是什麼意思「打破劇本」? – Xymostech

+2

有關相關信息,請參閱http://stackoverflow.com/questions/5926263/javascript-object-max-size-limit。我的猜測是限制在PHP中,而不是在JS中。 – jfriend00

+3

打開JS控制檯並自己嘗試。 'str =「」; for(var i = 0; i <100000; i ++){str = str +「x」; }'然後輸入'str'並回車。走着瞧吧。 –

回答

7

JS或PHP對其字符串的大小沒有任何理論上的限制。

我認爲有幾種可能的情況。

首先,檢查你是不是通過HTTP GET發送你的字符串。 GET有一個最大尺寸,我認爲它依賴於您的Web服務器。其次,如果您確實使用POST,請在php.ini中檢查post_max_size並查看它是否小於發送給它的字符串大小以及.htacccess文件以查看php_value post_max_size是否不是太小。

第三,檢查在php.ini中,您的memory_limit不會限制腳本可以使用的內存大小。

希望這有助於。

+0

感謝您的回覆。我在同一個php頁面中編寫了javascript,並將同一頁面上的javascript變量分配給一個javascript變量。如果我回顯變量,我可以看到輸出,但一旦分配給j,沒有任何東西會在下面執行。 – Rohith

+0

只是一個鏡頭,但你重新生成任何單引號或雙引號,可能會導致你的js打破。在傳給js之前,你是否逃脫了他們? 在JavaScript控制檯中是否有任何錯誤? –

+0

在JavaScript控制檯中沒有錯誤。沒有單引號和雙引號也被重新生成。 – Rohith

16

ECMAScript標準ECMA-262(第六版,2015年6月)說

6.1.4字符串類型

String類型是一組零個或多個16位無符號的所有排序的序列中整數值(「元素」),最大長度爲2個元素。

因此,不要計劃使用超過9,007,199,254,740,991或約9萬億字符。當然,您應該爲無法分配18 PB內存塊的系統做好準備,因爲這不符合ECMAScript實現的要求。