在JavaScript中获取请求属性

Get Request Attributes in JavaScript

本文关键字:请求 属性 获取 JavaScript      更新时间:2023-09-26

加载页面时,我的控制器中有以下内容:

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、servlet等。我想要纯JavaScript代码。

我有点惊讶,我没有发现这个已经被问到。很抱歉,如果这是一份副本,我只是没有看到原件。

使用以下内容应该可以工作。

var jsAtt = '${myAtt}';

我想我偶然发现的问题,因为试图根据我的需要动态生成字符串,JavaScript似乎不喜欢。例如,这会产生以下问题:

var counter = 1;
var jsAtt = '${myAtt' + counter + '}';

JavaScript似乎可以识别请求参数语法,但只有在它完全预先确定的情况下。

对于GET请求,您可以从QueryString中获取值。查看此页面:http://www.thimbleopensource.com/tutorials-snippets/get-request-parameters-using-javascript

我不确定POST请求。

将以下代码放入jsp页面的header标签中(不在js文件中):

<script type="text/javascript">
var jsAtt = '<%= request.getAttribute("myAtt") %>';
</script>

但是你的字符串一定不能包含简单的引号,因为它会破坏jsp对字符串的解释。

如果你需要带简单引号的字符串,你需要,例如,在服务器端用"';":

request.setAttribute("myAtt", myAtt.replaceAll("'", "&#39;"));

并在JSP中重新替换它:

<script type="text/javascript">
var jsAtt = '<%= request.getAttribute("myAtt") %>';
jsAtt = jsAtt.replace(/&#39;/g, "'");
</script>

对于Object而不是String,您可以使用JSON将它们作为String传递。

我还没有测试过这个,但你试过吗?

${pageContext.request.myAtt}