Ciao a tutti! Sto lavorando su due pagine JSP. In particolare una che contiene un modulo di registrazione, in cui vengono inseriti dei parametri e inviati ad una servlet Controller, la quale esegue un'operazione sul database. Questo č il problema.
In questa JSP inserisco i campi per la registrazione in un form che invoca una funzione javascript in cui uso AJAX. Vorrei inviare i dati al controller e lo faccio via url tramite post, ma qualcosa non va. Infatti nel database se vengono inseriti dati spunta una strana voce "objectHTMLInputElement". Suppongo sbaglio a passare i parametri "nome,cognome,username,password". Ecco il codice:
codice:
<%@page contentType="text/html" pageEncoding="UTF-8"%><!DOCTYPE html>
<html>
<head>
<link href="stile2.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" src="./js/site.js"></script>
<title>JSP Page</title>
</head>
<body>
<script type="text/javascript">
function setXMLHttpRequest(){
var xhr=null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}else if(window.ActiveXObject){
xhr = new ActiveXObject("MicrosoftXMLHTTP");
}
return xhr;
}
var xhrObj = setXMLHttpRequest();
function registraUtente(){
//RECUPERO DEI PARAMETRI
//ESECUZIONE DELLA CHIAMATA AJAX
/* var nome = $("#nome").val();
var cognome = $("#cognome").val();
var username = $("#username").val();
var password = $("#password").val(); /
// $.ajax(
// {
// type: 'POST',
// url: 'inserisciutente.jsp',
// data: "nome=" + nome + "&cognome=" + cognome + "&username=" + username + "&password=" +password,
/* complete: function Ok(data){
//SE CI SONO ERRORI MOSTRO L'ERRORE ALTRIMENTI UN MESSAGGIO DI CONFERMA
// alert("Registrazione avvenuta con successo!");
$('#risultato').load('CIAO');
},
fail: function Errore(){
alert("Errore nella registrazione!!!");
}*/
// });
var nome=document.getElementById("nome");
var cognome=document.getElementById("cognome");
var username=document.getElementById("username");
var password=document.getElementById("password");
/*var url ="Controller?state=registraUtente&nome="+document.getElementById("nome")+
"&cognome="+document.getElementById("cognome")+
"&username="+document.getElementById("username")+
"&password="+document.getElementById("password")+""; */
var url ="Controller?state=registraUtente&nome="+nome+"&cognome="+cognome+"&username="+username+"&password="+password+"";
xhrObj.open("GET",url,true);
xhrObj.onreadystatechange=updatePage;
xhrObj.send(null);
}
//funzione che modifica l'html desiderato
function updatePage(){
if(xhrObj.readyState == 4){
var risp = xhrObj.responseText;
document.getElementById("risultato").innerHTML=risp;
}
}
</script>
<article>
<h3>Registrati</h3>
<form class="registrazione" action="javascript:registraUtente()" method="post">
<fieldset>
<p>
<label for="nome">Nome</label>
<input type="text" id="nome" name="nome" placeholder="es. Mario" required value="" />
</p>
<p>
<label for="cognome">Cognome</label>
<input type="text" id="cognome" name="cognome" placeholder="es. Rossi" required value="" />
</p>
<p>
<label for="username">Username</label>
<input type="text" id="username" name="username" placeholder="es. mrossi82" required value="" />
</p>
<p>
<label for="password">Password</label>
<input type="password" id="password" name="password" placeholder="es. Ab0123" required value="" />
</p>
<p class="bottone">
<button class="bottone-invia" type="submit" >Invia</button>
</p>
</fieldset>
</form>
<div id="risultato">
</div>
</article>
</body>
</html>
E qui la sezione interessata del controller:
codice:
else if("registraUtente".equals(request.getParameter("state"))){
PrintWriter writer = response.getWriter();
String nome=request.getParameter("nome");
String cognome=request.getParameter("cognome");
String username=request.getParameter("username");
String pwd=request.getParameter("password");
boolean ris=c.addUser(nome, cognome, username, pwd, "user");
if(ris){
writer.print("Utente inserito correttamente!!!");
}
else{
writer.print("Errore!\nInserisci un username differente!");
}
}
La chiamata AJAX sembra funzionare correttamente, perņ nel database compare quella voce che vi ho indicato sopra. Cosa non va secondo voi?