How to access a servlet variable inside javascript

谁说胖子不能爱 提交于 2020-01-01 09:16:16

问题


I have a servlet which has a variable which holds a JSON string.

JSONObject obj = new JSONObject();
obj.put("parameter", jsonList);
request.setAttribute("jsonstring", obj.toString());
RequestDispatcher rd = request.getRequestDispatcher("/file.jsp");
rd.forward(request, response);

Now I am forwarding my request and response objects to a JSP page which contains a JS file. How can I access the value of jsonstring variable inside the JS file.As I need to parse my JSON string further using jQuery.

I tried doing this in my JS file as I saw in some of the posts online.But it seems like its not working for me.

var test = '<%=request.getAttribute("jsonstring")%>'

Kindly guide me on the same.Thanx.


回答1:


If the JSP file uses a <script> tag to load an external JavaScript file, something like this:

<script type="text/javascript" src="js/yourFile.js"></script>

then it won't work. What you have is a JSP scriptlet which only means something during the execution of the JSP file. That yourFile.js file won't be parsed server-side because it doesn't need to be. Only the browser will know what to do with the <script> tag and issue a request to the server to load the JavaScript.

In these cases what you can do is something like this inside your JSP:

<script type="text/javascript">
    var test = <%=request.getAttribute("jsonstring")%>;
</script>
<script type="text/javascript" src="js/yourFile.js"/></script>

Since the JSP scriptlet is inside your JSP file it now actually gets processed correctly, and instead outputs the valid JSON for the object/array to store in the globally scoped test variable, which you can then refer to inside yourFile.js.




回答2:


Try this :

var test = <%=request.getAttribute("jsonstring")%>;

Else try that :

var test = eval('<%=request.getAttribute("jsonstring")%>');



回答3:


put object direct in the request like this

request.setAttribute("jsonstring", obj);

then assign request obj to js variable, it will be accessable as json object;

var test = <%=request.getAttribute("jsonstring")%>;
... = test.parameter;



回答4:


The solution for me was the following:

<script type="text/javascript">
    var value =<%=request.getAttribute("indicadorId") %>;
</script>


来源:https://stackoverflow.com/questions/21457408/how-to-access-a-servlet-variable-inside-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!