当参数包含括号时,为什么javascript会因为语法错误而失败
Why does javascript fail with syntax error when parameter contains bracket?
我在我的一个网页的body元素的onLoad中调用javascript函数。如下所示:
<body onLoad="initPage(<%=object.getStringWithBrackets()%>); otherfunction();">
getStringWithBrackets()
是一个java函数,它将返回一个像这样的字符串:"['Name']"
出现语法错误:SyntaxError: syntax error initPage([
括号后面有一个小箭头。
如果我用单引号括住脚本,小箭头就会指向单引号和括号之间:
不允许传递带括号的字符串作为参数吗?
编辑:谢谢你的帮助。这是失败的html行(我在遇到错误后从源代码复制的)。我只是更改了另一个函数的名称,其他所有内容都未更改),我在脚本周围放回单引号以显示失败:
<body onLoad="initPage('["Print"]'); otherfunction('param1', 'param2', 'param3', 'param4', 'param5');">
还想提到的是,java方法getStringWithBrackets()
使用Gson返回java List()的json字符串版本。我就是这样得到["Print"]的
在我看来,你的问题是你正在返回字面上的"['Name']"
,你插入到一个onLoad值,它本身是包装在单引号。我不能确切地追踪为什么你会结束你所说的你得到的东西,但我猜你没有向我们提供你的确切的 javascript代码,并且onLoad被包装在与Name
相同的引号中(在这里你显示单引号,字符串被终止)。所以你最终会写出像这样的html:
onload变成"initPage(["(从你的错误中我看到onload设置在[
之后终止,所以它必须具有与onload字符串本身相同的引号)和, 当然,是无效的javascript。
你当然可以传递带有参数的字符串作为javascript。还可以将数组作为参数传递。但是你不能把'
和"
都写进一个javascript表达式中,除非你转义它。
希望有帮助!
看起来您需要在字符串值周围添加引号。你的asp.net代码将返回一个字符串,但你需要在它周围加上引号,以便在javascript中被视为字符串:
<body onLoad="initPage('<%=object.getStringWithBrackets()%>'); otherfunction();">
- 铬:“;未捕获的语法错误:意外的标记:"
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 如何告诉MathJax对下标使用替代语法
- onclick函数需要双击,因为类分配延迟
- Javascript语法向设置发出sessionStorage值
- 未捕获的语法错误:意外的标记{
- 使用$scope方法时的ControllerAs语法
- "未捕获的语法错误:意外的标记}"
- javascript自执行函数-不同的语法
- 函数的Javascript语法
- WinJS内联绑定语法
- 使用JS函数来使用另一个函数的语法?node.js
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- 有没有针对带有表的JavaScript的Markdown语法解析器
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- 语法高亮显示正则表达式不工作,因为现有的正则表达式匹配
- 当参数包含括号时,为什么javascript会因为语法错误而失败