2011-11-02 101 views
2

我从.net后面的代码发送一个JavaScript函数的字符串。问题是该字符串超过200个字符长,并且JavaScript函数似乎不接受该字符串。变量可以有多长时间是有限制的,有没有办法解决这个问题?javascript参数字符长度限制?

If dr("ReturnType").ToString() = "Override" Then 
        Dim teststring As String = "openWin('" & dr("ReturnValue").ToString() & "');" 
        ScriptManager.RegisterStartupScript(Me, Me.[GetType](), "openWin", teststring, True) 
       End If 
+0

请将代码放在要定义字符串的位置。 –

回答

4

是的,有一个限制:大约2GB,这是你可以存储在一个字符串在.NET中。但是因为我们可以安全地假设你不是从服务器发送这种音量到客户端(或者至少我们可以希望),另一种可能是你的字符串没有被编码。因此在将其发送给客户端之前进行编码。确保字符串或对象编码正确的最好方法是让JSON序列化它。在.NET中,这可以通过JavaScriptSerializer类轻松实现:

var value = new JavaScriptSerializer().Serialize("some string that contains ' and \"."); 
var script = string.Format("alert({0});", value); 
ClientScript.RegisterStartupScript(GetType(), "someKey", script, true); 
+0

你是冠军。谢谢 – Eric

3

号你可能忘了逃跑的字符串。

0

最大文字字符串长度因实现而异,但在现代浏览器中,长度可能仅限于浏览器可用内存量。

例如,我只是在Chrome中尝试了一个测试,它让我在决定终止进程之前,为单个字符串文本消耗超过400 MB的内存。