
Originariamente inviata da
Vindav
Stai facendo due chiamate ajax(anche il metodo load di jquery effettua una chiamata ajax), la seconda andrą sempre in errore perche non passi i parametri necessari, una delle due č ovviamente inutile. Inoltre non mi risulta che jquery gestisca la callback 'failure' forse volevi scrivere fail? Ti consiglio caldamente di leggere la documentazione di jquery.
Si non ho visto che quel metodo di failure č deprecated, dovrebbe andare sostituendo con fail. Ad ogni modo:
la chiamata load a quanto ho visto puņ essere effettuata anche senza parametri...
http://gabrieleromanato.com/2012/08/...oad-di-jquery/
E ho provato a passare i miei parametri ma per ciņ che devo fare non mi servirebbero, perchč li passo la prima volta.
Allora il discorso č questo...i dati vengono correttamente inviati dal form perchč controllando sul database vengono inseriti. Se ad esempio nella pagina JSP scrivo un paragrafo, questo viene correttamente restituito in output, se inserisco elementi dinamici no. Posto le modifiche fatte.
La pagina con AJAX sostanzialmente cambia poco.
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>
<title>JSP Page</title>
</head>
<body>
<script type="text/javascript">
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,
/*success:*/
success: function Ok(data){
//SE CI SONO ERRORI MOSTRO L'ERRORE ALTRIMENTI UN MESSAGGIO DI CONFERMA
alert("Registrazione avvenuta con successo!");
// $('#wrapper').load('test.html #test');
$('#risultato').load('inserisciutente.jsp', {nome:nome,cognome:cognome,username:username,password:password});
},
fail: function Errore(){
alert("Errore nella registrazione!!!");
}
});
}
</script>
<article>
<h3>Registrati</h3>
<!--action="<%=request.getContextPath()%>/Controller?state=nuoviutenti" -->
<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>
Mentre nella JSP non capisco perchč cosģ non va bene:
codice:
<%@page import="viste.ConnectionDb"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
ConnectionDb c=new ConnectionDb();
boolean good=c.addUser(request.getParameter("nome"),request.getParameter("cognome"),request.getParameter("username"),
request.getParameter("password"), "user");
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Nuovo utente inserito!</title>
</head>
<body>
<%if(good){%>
<%="Utente registrato!"%>
<%}%>
<%else{%>
<%="Errore!"+"\n"+"Scegli un username diverso, poiche' gia' preso."%>
<%}%>
</body>
</html>
Perchč non viene restituito comunque un contenuto della JSP?