2008-12-30 55 views
5

ahora tengo una página jsp que permite ordenar algunos elementos, cuando está listo y se hace clic en un enlace una función javascript convierte toda la información en xml (texto en una variable), después de esto tengo que enviar este xml a la página jsp nuevamente, traté de poner la información en una entrada oculta y enviar el formulario, enviando con $ .post y algunas funciones jquery más, pero nada funcionó. Alguna idea?Enviar un valor de javascript a jsp (con jquery)

en mi JSP im leer el post como este:

<% out.println(request.getParameter("data")); %> 

Esto no funciona:

xml = "<xml></xml>"; 
$("#form").submit(function(){ 
    alert("JS: " + $("#data").text()); 
    $("#data").text(xml); 
}); 

Esta bien:

xml = "<xml></xml>"; 
$("#data").text(xml); 
$("#form").submit(); 

sustitución de .text con .html no funciona

Cualquier idea es bienvenida, thx

Respuesta

3

Probablemente va por el camino equivocado aquí. No ha proporcionado el código html, pero supongo que es algo como esto:

<form method="POST" id="form"> 
    <input type="hidden" id="data" /> 
</form> 

Si esto es correcto, entonces usted debe decir $("#data").val(xml); en lugar de text() o html() como los que cambian la cosa emparejado con el texto o html tu provees. Esto debería funcionar para su solución actual.

También propongo mirar el $.post() de jQuery y otros como una alternativa a empaquetar todo como xml a menos que esto sea realmente lo que quiere en el back-end. Podría ser más fácil simplemente hacer que un objeto JavaScript con todos los valores tecleados por algunos nombres y pasarlo a uno de jQuery de $.post(), $.get(), etc. así:

var values = {name: "John", surname: "Doe"}; 
values.age = 25; 
$.post("index.jsp", values); // this will result in a post with 3 variables: name, surname, age 

En realidad, sólo se me ocurrió ahora que también puede enviar su xml de esta manera (a menos que usted prefiere que su forma de hacer las cosas):

$.post("index.jsp", {data: "<xml><whatever-else-needs-to-be-in-here/></xml>"}); 

es posible que desee iluminar a ti mismo más aquí: Ajax @ jQuery docs

1

Siempre se puede utilizar un XMLHttpRequest para enviar los datos. Esto se puede hacer con nuestra interacción sin el usuario en un elemento como un botón de envío de formulario. jQuery tiene funcionalidad incorporada para ayudar con tales solicitudes.

http://docs.jquery.com/Ajax

+0

Sugiriendo otra biblioteca es como crear un lío aquí. JQuery es tan bueno como Prototype para hacer llamadas AJAX, sino es mejor. –

2

Tratando con la API de jQuery Ajax - se puede usar para enviar datos arbitrarios mediante GET o POST y no es necesario para establecer una forma oculta o nada.

+0

Sí, no enviamos formularios, como tradicionalmente hacemos. Una sugerencia sonora. –

Cuestiones relacionadas