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变量?

+0

与您当前的做法,会发生什么? –

+0

是否要将JS代码保存在与JSP相同的页面上? –

+0

只是说,Ajax使用的是Javascript,客户端没有JSP。这意味着“fileName”在这一点上是一个常量(用''标签输出/写入。在客户端检查源代码,你会发现它会像''test':'your parameter'/ /这里是我发送的参数' – AxelH

您可以使用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; 
}, 
+0

如果它是一个数组?创建每个元素? –

+0

您在数组中有什么类型的元素? –

+0

如果该请求只需要使用该值,则可以直接在'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>