You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSP传递Servlet参数至JavaScript时遇Unexpected token :语法错误求助

解决Servlet传URL到JSP时的JavaScript语法错误

嘿,我来帮你搞定这个问题!你遇到的Uncaught SyntaxError: Unexpected token :错误,其实原因特别简单——你把字符串类型的URL赋值给JS变量时,没给它加引号!

看你这段代码:

var url=<%=urlData%>;

假设从Servlet传过来的urlData是类似https://example.com/page这样的URL,JSP编译后会变成这样的JS代码:

var url=https://example.com/page;

这在JS里完全是非法语法啊!字符串必须用单引号或双引号包裹,浏览器看到://里的冒号,就不知道这是什么鬼东西了,直接抛出语法错误。

怎么改?

给输出的URL加上引号就行,这里有两种靠谱的方式:

  1. 最简单的写法:直接在JSP表达式前后加双引号
<%String urlData=(String)request.getAttribute("urlDataFromServlet");%>
<script type="text/javascript">
var url="<%=urlData%>"; // 重点就在这对双引号!
$(document).ready(function() {
  // 你的后续代码,比如创建链接之类的
});
</script>
  1. 更安全的写法:用JSTL的<c:out>标签
    如果你的URL里有特殊字符(比如双引号、&符号),上面的写法可能又会出问题。这时候用JSTL的<c:out>就很省心,它会自动转义这些特殊字符,既避免语法错误,还能防XSS攻击:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<head>
<script type="text/javascript">
var url="<c:out value='${urlDataFromServlet}'/>";
$(document).ready(function() {
  // 你的后续代码
});
</script>

(注意:用这个的话,得先确保项目里引入了JSTL的jar包哦)

额外提个醒

别忘了确认Servlet里确实把数据存到request属性里了,比如要写类似这样的代码:

request.setAttribute("urlDataFromServlet", "https://你的目标URL.com");

内容的提问来源于stack exchange,提问作者ramesh027

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:22:34