在JavaScript中获取请求属性

时间:2011-10-28 19:24:04

标签: javascript jsp

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

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。

4 个答案:

答案 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("'", "&#39;"));

然后在您的JSP中再次替换它:

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

对于对象而不是字符串,您可以使用JSON将它们作为字符串传递。

答案 3 :(得分:-1)

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

${pageContext.request.myAtt}