JSP通过ajax发送Java变量
我想发送通过ajax请求定义的JSP java变量,它有可能吗?JSP通过ajax发送Java变量
我的JSP:
<%
String fileName = (String)request.getAttribute(MatafConstants.PARAM_IMG_FILE_NAMES);
%>
然后我想给这个字符串:
$.ajax({
url: "/some/urlServlet",
type: "get", //send it through get method
data: {
"statusID": status,
"test": '<%=fileName%>' //here is the param I send
},
success: function(response) {
//Do Something
console.log(response);
},
error: function(xhr) {
//Do Something to handle error
}
});
我怎么能送这个PARAM?或更大的问题,我可以在JavaScript中使用JSP的Java变量?
您可以使用scriplet中的值创建隐藏字段,然后在Java Script中使用它的值。类似下面:
JSP代码
<input type="hidden" id="fileName" value="<%=(String)request.getAttribute(MatafConstants.PARAM_IMG_FILE_NAMES)%>">
的Java脚本代码
data: {
"statusID": status,
"test": document.getElementById("fileName").value;
},
如果它是一个数组?创建每个元素? –
您在数组中有什么类型的元素? –
如果该请求只需要使用该值,则可以直接在'data.test'字段中完成。在这种情况下使用隐藏字段没有什么特别之处 – AxelH
答案是肯定的。并且您的请求看起来正确。但请确保您在启动该变量的同一页面中添加AJAX调用。
<jsp:declaration>
String name=null;
String role=null;
String company=null;
</jsp:declaration>
<jsp:scriptlet>
if(request.getSession().getAttribute("username")==null){
response.sendRedirect("../login.jsp");
}
else{
name=(String)request.getSession().getAttribute("username");
role= (String)request.getSession().getAttribute("role");
company=(String)request.getSession().getAttribute("company");
}
</jsp:scriptlet>
JavaScript中的同一页上:
<script>
var name="<jsp:expression>name</jsp:expression>";
var company="<jsp:expression>company </jsp:expression>";
</script>
与您当前的做法,会发生什么? –
是否要将JS代码保存在与JSP相同的页面上? –
只是说,Ajax使用的是Javascript,客户端没有JSP。这意味着“fileName”在这一点上是一个常量(用''标签输出/写入。在客户端检查源代码,你会发现它会像''test':'your parameter'/ /这里是我发送的参数' – AxelH