加载页面时,我的控制器中有以下内容:
request.setAttribute("myAtt", "Testing");
我想在我的JSP文件中访问它。在HTML部分中,我熟悉使用以下内容:
${myAtt} ${requestScope.myAtt}
之类的。但是,我从未确定如何在JavaScript中访问请求参数。我尝试了很多东西,比如:
var jsAtt = ${myAtt};
var jsAtt = '${myAtt}';
var jsAtt = eval(${myAtt});
var jsAtt = eval('${myAtt}');
等,但似乎没有任何效果。
有没有办法通过JavaScript获取请求属性?请不要jQuery,servlets等。我想要纯JavaScript代码。
我有点惊讶我没有发现这已经被问过了。很抱歉,如果它是重复的,我只是没有看到orignal。
答案 0 :(得分:14)
使用以下内容应该有效。
var jsAtt = '${myAtt}';
我认为我偶然发现问题是因为尝试根据我的需要动态生成字符串,JavaScript似乎不喜欢。例如,这会有问题:
var counter = 1;
var jsAtt = '${myAtt' + counter + '}';
JavaScript似乎识别了请求参数语法,但只有在完全预定的情况下才会识别。
答案 1 :(得分:0)
对于GET请求,您可以从QueryString获取值。 查看此页面: http://www.thimbleopensource.com/tutorials-snippets/get-request-parameters-using-javascript
我不确定POST请求。
答案 2 :(得分:0)
将以下代码放入您的jsp页面的head标签内(不在js文件中):
<script type="text/javascript">
var jsAtt = '<%= request.getAttribute("myAtt") %>';
</script>
但是您的字符串不能包含简单的引号,因为它会破坏jsp中String的解释。
如果需要带简单引号的String,则需要在服务器端用“&#39;”替换它们。 :
request.setAttribute("myAtt", myAtt.replaceAll("'", "'"));
然后在您的JSP中再次替换它:
<script type="text/javascript">
var jsAtt = '<%= request.getAttribute("myAtt") %>';
jsAtt = jsAtt.replace(/'/g, "'");
</script>
对于对象而不是字符串,您可以使用JSON将它们作为字符串传递。
答案 3 :(得分:-1)
我没有测试过这个,但你试过这个吗?
${pageContext.request.myAtt}