Invio di un valore da javascript a jsp (con jquery)
-
03-07-2019 - |
Domanda
in questo momento ho una pagina jsp che permette di ordinare alcuni elementi, quando è pronto e si fa clic su un collegamento, una funzione javascript converte tutte le informazioni in xml (testo in una variabile), dopodiché devo inviare questo xml a di nuovo nella pagina jsp, ho provato a inserire le informazioni in un input nascosto e a inviare il modulo, inviando con $ .post e qualche altra funzione jquery ma nulla ha funzionato. Qualche idea?
nel mio JSP sto leggendo il post in questo modo:
<% out.println(request.getParameter("data")); %>
Questo non funziona:
xml = "<xml></xml>";
$("#form").submit(function(){
alert("JS: " + $("#data").text());
$("#data").text(xml);
});
Anche questo:
xml = "<xml></xml>";
$("#data").text(xml);
$("#form").submit();
la sostituzione di .text con .html non funziona
Tutte le idee sono benvenute, grazie
Soluzione
Probabilmente stai andando nella direzione sbagliata qui. Non hai fornito il codice HTML, ma suppongo che sia qualcosa del genere:
<form method="POST" id="form">
<input type="hidden" id="data" />
</form>
Se questo è corretto, dovresti dire $ (" # data "). val (xml);
anziché text ()
o html ()
in quanto cambiano l'oggetto abbinato con testo o html forniti. Questo dovrebbe funzionare per la tua soluzione attuale.
Inoltre proporrei di guardare $ .post ()
di jQuery e altri come alternativa al confezionamento di tutto come xml a meno che questo non sia proprio quello che vuoi sul backend. Potrebbe essere più semplice creare un oggetto javascript con tutti i valori digitati da alcuni nomi e passarlo a uno dei $ .post (), $ .get ()
di jQuery, ecc. Come questo :
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
In realtà mi è capitato solo ora che puoi anche inviare il tuo xml in questo modo (a meno che tu non preferisca il tuo modo di fare le cose):
$.post("index.jsp", {data: "<xml><whatever-else-needs-to-be-in-here/></xml>"});
Potresti voler illuminarti di più qui: Ajax @ jQuery docs
Altri suggerimenti
Prova a utilizzare l'API jQuery Ajax : puoi utilizzarla per inviare dati arbitrari tramite GET o POST e non è necessario impostare un modulo nascosto o altro.
È sempre possibile utilizzare un XMLHttpRequest per inviare i dati. Questo può essere fatto con il nostro senza interazione dell'utente su un elemento come un pulsante di invio del modulo. jQuery ha funzionalità integrate per l'assistenza con tali richieste.