我试图将我的代码后面的字符串传递给我的.aspx文件中的JavaScript函数。 如果我传递一个短的虚拟字符串,例如" bla。" ,这可以正常工作但是当我传递一个完整的异常消息+堆栈跟踪时,程序挂起并且不会进入JavaScript功能
以下是我试图完成此任务的方法:
ScriptManager.RegisterStartupScript(this, typeof(string), "loading log message popup", String.Format("LogMessagePopup('{0}')", logMessage), true);
在我的服务器端是LogMessagePopup JavaScript函数,
function LogMessagePopup() {
...
JavaScript函数的内容并不重要。
问题可能是logMessage很长。它是一个完整的异常和堆栈跟踪,超过4KB。
如果我传递较短的消息,我的代码就可以了。
特殊字符也可能存在问题,但在使用logMessage.replace转义JavaScript中的特殊字符后,问题仍然存在。
我一直在读你可以通过POST将更长的字符串传递给服务器端代码,但我不明白如何做到这一点,如果这甚至是我正在寻找的解决方案因为我不知道如何将它专门传递给我的JavaScript LogMessagePopup函数。字符串在途中丢失了。
答案 0 :(得分:0)
看一下这个帖子 ScriptManager.RegisterStartupScript code not working - why? 看起来你需要使用GetType而不是typeof
protected void Page_PreRender(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this, GetType(), "YourUniqueScriptKey",
"alert('This pops up');", true);
}