Legen Sie eine JavaScript-Variable von JSP (serverseitig) an, ohne die Seite neu zu laden

Ich möchte eine JavaScript-Variable von JSP festlegen, ohne dass die gesamte Seite neu geladen wird. Der Code, den ich jetzt habe, setzt die Variable, lädt aber die gesamte Seite als Nebeneffekt neu.

beispiel.jsp:

    <html>
      
    </html>
    <script>
      function getCountryI() {
        alert(3);
        var id = document.getElementById("country").value;
        window.location.replace("example.jsp?name=" + id);
      }
</script>
      <%
         String value = request.getParameter("name");
         System.out.println("value is" + value);
         out.println("valuevaluevalue" + value);
       %>
0
Auf der Seite zum Aktualisieren gibt es eine andere Möglichkeit, den Wert in Jsp zu erhalten, ohne einen Ajax-Aufruf aufzurufen.
hinzugefügt der Autor user3108190, Quelle
window.location.replace macht das, wenn Sie nicht neu laden wollen, brauchen Sie ajax.
hinzugefügt der Autor adeneo, Quelle

4 Antworten

Du könntest Old School Ajax benutzen:

<form action="..." method="..." target="foo">
    ...
    <input type="submit" value="Submit">
</form>

<iframe id="foo"></iframe>

Sie können einen Onload-Ereignishandler an den iframe anhängen, damit Sie alle gewünschten Informationen extrahieren können:

var foo = null;
var iframe = document.getElementById("foo");

iframe.addEventListener("load", function() {
    var win = iframe.contentWindow || iframe.contentDocument;

    foo = win.foo
});

The response in the IFRAME could have a normal <script> tag that sets a global variable in that document, which you can access from the parent window.

EDIT: Der Schlüssel hier ist das target -Attribut auf dem FORM-Tag enthält den Wert der id auf dem IFRAME. Dadurch wird das Formular an IFRAME übergeben und die Antwort im IFRAME geladen.

0
hinzugefügt

I don't thing the problem is inside <%%>. The event onChange has been called and this code is "refreshing" the page. (actually changing location)

 window.location.replace("example.jsp?name=" + id);

Probiere es aus.

0
hinzugefügt
Seine erfrischende Seite gibt es eine andere Möglichkeit, den Wert in Jsp ohne Ajax-Aufruf zu erhalten
hinzugefügt der Autor user3108190, Quelle
Ja, aber ich habe es anders versucht, aber der Wert wird null. Wenn ich versuche, wie diese ganze Seite neu geladen wird. gibt es einen anderen Weg, es zu tun.
hinzugefügt der Autor user3108190, Quelle
@ user3108190 AJAX ist das, was macht was du machen willst. Sie können die serverseitige Logik auch in das JavaScript des Clients verschieben.
hinzugefügt der Autor zwol, Quelle

Dieser Teil ist ungültig:

<script>
  function getCountryI() {
    alert(3);
    var id = document.getElementById("country").value;
    window.location.replace("example.jsp?name=" + id);
  }
  <%
     String value = request.getParameter("name");
     System.out.println("value is" + value);
     out.println("valuevaluevalue" + value);
   %>
</script>

Der out.println fügt nach der Aktualisierung einen ungültigen Skript-Inhalt in die gerenderte Seite ein und wird auch nicht angezeigt.

The <% %> part should be moved out of the script like this :

<script>
  function getCountryI() {
    alert(3);
    var id = document.getElementById("country").value;
    window.location.replace("example.jsp?name=" + id);
  }
</script>
  <%
     String value = request.getParameter("name");
     System.out.println("value is" + value);
     out.println("valuevaluevalue" + value);
   %>
0
hinzugefügt
Ja, ich habe versucht, aber die ganze Seite wird neu geladen. Es gibt noch eine andere Möglichkeit, dies zu tun, bitte hilf mir.
hinzugefügt der Autor user3108190, Quelle
Ohne Ajax Call gibt es noch eine andere Lösung
hinzugefügt der Autor user3108190, Quelle
Wenn ich Ajax benutze, wird die Antwort nur in demselben JavaScript kommen, wie man diese Java-Script-Variable in Jsp bekommt.
hinzugefügt der Autor user3108190, Quelle
@ user3108190 Dann wäre der Weg, um AJAX wahrscheinlich mit jQuery.ajax zum Beispiel zu verwenden.
hinzugefügt der Autor Alexandre Lavoie, Quelle
@ user3108190 AJAX ist die Methode, also ist dies der Weg, es zu tun. Sie können verschiedene Bibliotheken verwenden oder manuell tun, aber das Laden von Daten ohne vollständige Aktualisierung ist AJAX. Was hast du probiert und was war so schwer daran?
hinzugefügt der Autor Alexandre Lavoie, Quelle

Nachdem Sie die Seite heruntergeladen haben, können Sie nur eine lokale Variable (In-Page) vom Server aktualisieren

a) laden Sie die Seite neu, oder b) verwende AJAX (vorzugsweise JSON/P), um die Variable zu erhalten.

HTTP ist sitzungslos, dh die serverseitige Seite hat keine Möglichkeit, der Seite im Endbenutzerbrowser Daten zur Verfügung zu stellen, es sei denn, der Browser initiiert den Kontakt. (Web-/Browser-Sockets beiseite, da sie nur HTML5 sind. Möchten Sie wirklich, dass die Serverseite eine Liste aller Browser führt, die jemals eine Antwort benötigt haben, und Code schreiben, um sie zu altern? Wenn Sie das tun, gehen Sie gleich weiter - Aber es ist einfacher, nur AJAX es.)

0
hinzugefügt
JavaScript - Deutsche Gemeinschaft
JavaScript - Deutsche Gemeinschaft
3 der Teilnehmer

In dieser Gruppe sprechen wir über JavaScript.