Establezca una variable de JavaScript desde JSP (lado del servidor) sin volver a cargar la página

Quiero establecer una variable de JavaScript desde JSP sin causar que la página entera se vuelva a cargar. El código que ahora tengo establece la variable, pero vuelve a cargar toda la página como un efecto secundario.

ejemplo.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
su página refrescante tiene alguna otra forma de obtener el valor en jsp sin llamar a una llamada jaja.
agregado el autor user3108190, fuente
window.location.replace hará eso, si no quieres volver a cargar, necesitarás ajax.
agregado el autor adeneo, fuente

4 Respuestas

Podrías usar el Ajax de la vieja escuela:

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

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

Puede adjuntar un controlador de eventos onload al iframe para que pueda extraer la información que desee:

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: la clave aquí es el atributo target en la etiqueta FORM que contiene el valor de la id en el IFRAME. Eso hará que el formulario se envíe al IFRAME y cargue la respuesta en el IFRAME.

0
agregado

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

Prueba la depuración.

0
agregado
su página refrescante hay alguna otra forma de obtener el valor en jsp sin usar una llamada ajax
agregado el autor user3108190, fuente
pero intenté de otra manera, pero el valor es nulo. si intento que esta página entera se vuelva a cargar, hay otra forma de hacerlo.
agregado el autor user3108190, fuente
@ user3108190 AJAX es lo que hace lo que quiere hacer. También podría mover la lógica del lado del servidor al JavaScript del cliente.
agregado el autor zwol, fuente

Esta parte no es válida:

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

El out.println agregará contenido de script no válido en la página representada después de la actualización, también no se mostrará.

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
agregado
Ya lo intenté, pero toda la página se está recargando. ¿Hay alguna otra manera de hacerlo? Por favor, ayúdenme.
agregado el autor user3108190, fuente
sin llamada ajax, ¿hay alguna otra solución?
agregado el autor user3108190, fuente
si uso ajax esa respuesta vendrá en el mismo JavaScript, solo cómo obtener esa variable java-script en jsp.
agregado el autor user3108190, fuente
@ user3108190 Entonces el camino sería usar AJAX probablemente con jQuery.ajax por ejemplo.
agregado el autor Alexandre Lavoie, fuente
@ user3108190 AJAX es el método, así que esta es la manera de hacerlo. Puede usar diferentes bibliotecas o hacerlo a mano, pero cargar datos sin una actualización completa ES AJAX. ¿Qué has intentado y qué fue tan difícil al respecto?
agregado el autor Alexandre Lavoie, fuente

Una vez que haya descargado la página, la única forma de actualizar una variable local (en la página) desde el servidor es

a) recarga la página, o b) use AJAX (JSON/P, preferiblemente) para obtener la variable.

HTTP no tiene sesiones, lo que significa que el lado del servidor no tiene forma de proporcionar datos a la página en el navegador del usuario final a menos que el navegador inicie el contacto. (Dejando de lado los sockets de la web/navegador, ya que solo son HTML5. ¿Realmente desea que el servidor guarde una lista de todos los navegadores que alguna vez han necesitado una respuesta y un código de escritura para superar su antigüedad? Si lo hace, siga adelante --pero es más fácil solo AJAX.)

0
agregado
JavaScript - Comunidad española
JavaScript - Comunidad española
4 de los participantes

En este grupo hablamos de JavaScript. Partner: es.switch-case.com