Premetto di postare qui e non in Java (a proposito, ringrazio Alka per avermi spostato la discussione nel forum corretto e mi scuso con lui) in quanto Ajax non riguarda solo un linguaggio come Java, ma più linguaggi (Javascript, Java, html nella pagina in cui una funzione viene richiamata ecc) quindi non sarebbe stato corretto limitarmi al forum Java.
Dunque, ho progettato la mia funzione AJAX: una pagina HTML richiama una funzione JAVASCRIPT che a sua volta tramite Ajax compie una richiesta ad una servlet Java per acquisirne la risposta. Ho fatto tutto, mi manca solo l'ultimo anello, ovvero "acquisire" le informazioni passate dalla servlet. Di seguito posterò quanto ho fatto sinora, indicandovi quindi l'errore che ricevo in relazione a tale ultimo anello. Naturalmente vi ringrazio in anticipo per la vostra attenzione.
Nella mia pagina JSP ho inserito un pulsante che richiama tale codice:
codice:
<input type="button" value="Prova Ajax!" onClick="miaFunzione()" />
Quindi in un file separato Ajax.js ho inserito tale codice:
codice:
var myRequest = null;
function CreateXmlHttpReq(handler) {
var xmlhttp = null;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = handler;
return xmlhttp;
}
function myHandler() {
if (myRequest.readyState == 4 && myRequest.status == 200) {
alert('se vedi questo testo significa che funziona');
}
}
function miaFunzione() {
myRequest = CreateXmlHttpReq(myHandler);
myRequest.open("GET","miaServlet");
myRequest.send(null);
}
Vediamo cosa accade. Sin qui tutto funziona; e questo esclude qualsiasi errore formale, o di nomi di servlet e funzioni. Tutto corretto, in quanto cliccando vedo correttamente l'avviso. Ora però se nella function myHandler voglio provare ad "acquisire" qualche dato passato dalla servlet, visualizzandolo nell'alert, leggo il messaggio di alert ma con la scritta "undefined". Ecco di seguito la riga di alert modificata:
codice:
alert(myRequest.rs);
Ed ecco il contenuto della servlet modificata, nella quale sono certo ci sia la causa dell'errore. Ovvero, secondo me sbaglio ad impostare correttamente una variabile (o parametro) acquisibile da Ajax. Ecco la servlet:
codice:
package servletProva;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class miaServlet
*/
public class miaServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public miaServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setAttribute("rs", "se vedi questo testo anche l'acquisizione da servlet funziona!");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request,response);
}
}
Da cosa dipende secondo voi? Come eventualmente modificare la servlet incriminata per consentirle di passare correttamente quel testo alla funzione che le invia una richiesta? Grazie a tutti.