2017-06-13 4 views
0

Ich möchte JSP-Java-Variablen, die ich über AJAX-Anfrage definiert hatte, senden, ist es möglich?JSP senden Java-Variablen von Ajax

Meine JSP:

<% 
    String fileName = (String)request.getAttribute(MatafConstants.PARAM_IMG_FILE_NAMES); 
%> 

Und dann will ich diesen String senden:

$.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 
        } 
}); 

Wie kann ich diesen param geschickt? Oder die größere Frage kann ich JSP Java-Variable in JavaScript verwenden?

+0

Was passiert mit Ihrem aktuellen Ansatz? –

+0

Möchten Sie Ihren JS-Code auf derselben Seite mit JSP beibehalten? –

+0

Nur gesagt, Ajax verwendet das Javascript, es gibt keine JSP auf der Client-Seite. Dies bedeutet, dass "fileName" an dieser Stelle eine Konstante ist (die Sie mit dem '<%= ...%>' -Tag ausgeben/ausgeben. Überprüfen Sie die Quelle auf dem Client, Sie werden sehen, dass das wie '" test "ist:" your parameter "//hier ist der Parameter, den ich sende " – AxelH

Antwort

1

Sie können ein ausgeblendetes Feld mit dem Wert scriplet erstellen und dann dessen Wert in Java Script verwenden. So etwas wie unten:

JSP-Code

<input type="hidden" id="fileName" value="<%=(String)request.getAttribute(MatafConstants.PARAM_IMG_FILE_NAMES)%>"> 

Java-Script-Code

data: { 
    "statusID": status, 
    "test": document.getElementById("fileName").value; 
}, 
+0

And Wenn es ein Array ist, erstellen Sie jedes Element? –

+0

Welche Art von Elementen haben Sie in Array? –

+0

Wenn diese Anforderung nur diesen Wert verwenden muss, könnte dies direkt im Feld "data.test" getan werden . Es ist nichts Besonderes, in diesem Fall ein verstecktes Feld zu verwenden. – AxelH

0

Antwort ist JA. und Ihre Anfrage sieht korrekt aus. Stellen Sie jedoch sicher, dass Sie den AJAX-Aufruf auf derselben Seite hinzufügen, auf der sich die Variable befindet, die Sie initiieren.

<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> 

in Javascript auf der gleichen Seite:

<script> 
      var name="<jsp:expression>name</jsp:expression>"; 
      var company="<jsp:expression>company </jsp:expression>"; 
</script>