webForumDet fria alternativet

$.get innuti $.submit

12 svar · 2 043 visningar · startad av noshornin

noshorninMedlem sedan aug. 2008816 inlägg
#1

Jag vill validera ett formulär innan det skickas. När jag validerar det så kollar jag om användarnamnet är upptaget med hjälp av jquery $.get(). Men jag får det inte riktigt att fungera. Lite hjälp skulle uppskattas.

Felet är att formuläret aldrig skickas. Om allting är rätt ifyllt, kommer alert rutan upp med texten: "du har fyllt i allting rätt". Men formuläret submitas ändå inte.

Se själva: ....

voigtann1Medlem sedan juni 20019 519 inlägg
#2

För det första: Validera all din kod innan du gör din GET, inte efter din GET är färdig, du få ju inget tillbaka ifrån test2.php?q= vad gör du i den?

noshorninMedlem sedan aug. 2008816 inlägg
#3

Alltså användarnamnet är menat att skickas med och den kollar sedan om användarnamnet redan existerar i databasen. Den returnerar "bilder/kryss.png" eller "bilder/check.png" beroende på om användarnamnet är upptaget eller inte.

Jag ska validera koden.

voigtann1Medlem sedan juni 20019 519 inlägg
#4

Jag får aldrig en response ifrån ditt AJAX callback, vad har du egentligen i filen?

noshorninMedlem sedan aug. 2008816 inlägg
#5

Jag tror inte det är felet. Den fungerar för mig. Men här är koden:

$user = $_GET["q"];
$sql = "SELECT username FROM medlemmar where username = ? LIMIT 1";
	
if ($stmt = $mysqli->prepare($sql)) 
{
	$stmt->bind_param("s", $user);
	$stmt->execute();
	$stmt->bind_result($username);
	$stmt->fetch();
	$stmt->close();
} 

if($username == ""){
    echo "bilder/check.png";
}else{
    echo "bilder/kryss.png";
}
noshorninMedlem sedan aug. 2008816 inlägg
#6

För att förklara lite bättre vad jag tror problemet är. Här är valideringskoden:

$(document).ready(function(){

/* Validerar innan publicering  */
$("#skapa_en_blogg").submit(function(e){
	var epost_value = $("#epost").val();
	var blogg_adress_value = $("#blogg_adress").val();
	var password_value = $("#password").val();
	var repeat_password_value = $("#repeat_password").val();
	var return_var = false;
	
	$.get("test2.php?q="+blogg_adress_value, function(result){
		if(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/.test(epost_value) && result == "bilder/check.png" && /^[a-zA-Z0-9]{5,}$/.test(blogg_adress_value) && /^[a-zA-Z0-9]{5,}$/.test(repeat_password_value) && repeat_password_value == password_value){
			[B]alert("Du har fyllt i allting rätt");[/B]
			return_var = true;
		}else{
			alert("Du har fyllt i någon uppgift fel");
		}
	});
	[B]return return_var;[/B]
});

});

"alert("Du har fyllt i allting rätt");" körs. Men "return return_var;" returnar av någon anledning ändå false.

voigtann1Medlem sedan juni 20019 519 inlägg
#7

testa med: http://vitorm.se/test/test2.php?q= så ser du att du behöver fixar din PHP kod om man inte ha något värde i q

Vad skall jag skriva för att inte få en validerad formulär, jag är inte direkt intressserad över att registera ett konto hos dig.

voigtann1Medlem sedan juni 20019 519 inlägg
#8

noshornin skrev:

För att förklara lite bättre vad jag tror problemet är. Här är valideringskoden:

$(document).ready(function(){

/* Validerar innan publicering  */
$("#skapa_en_blogg").submit(function(e){
	var epost_value = $("#epost").val();
	var blogg_adress_value = $("#blogg_adress").val();
	var password_value = $("#password").val();
	var repeat_password_value = $("#repeat_password").val();
	var return_var = false;
	
	$.get("test2.php?q="+blogg_adress_value, function(result){
		if(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/.test(epost_value) && result == "bilder/check.png" && /^[a-zA-Z0-9]{5,}$/.test(blogg_adress_value) && /^[a-zA-Z0-9]{5,}$/.test(repeat_password_value) && repeat_password_value == password_value){
			[B]alert("Du har fyllt i allting rätt");[/B]
			return_var = true;
		}else{
			alert("Du har fyllt i någon uppgift fel");
		}
	});
	[B]return return_var;[/B]
});

});

"alert("Du har fyllt i allting rätt");" körs. Men "return return_var;" returnar av någon anledning ändå false.

Ja? Läs hur AJAX fungera, första A:et i AJAX betyder: Asynchronous.

din JS kod körs inte uppifrån och ner utan den kör metoden färdig och sen om AJAX koden hinner bli färdig innan du kör formuläret, då retunera den din message box... men den har inget med din submit att göra om hur den skall retuneras.

noshorninMedlem sedan aug. 2008816 inlägg
#9

Du kommer inte bli medlem. Registrerings filen existerar inte. Du kommer bara få ett 404 error meddelande.

Skriv in ett anvädnarnamn och lösen som är längre än 5 bokstäver. och en epost som är typ: "lala@lala.la"

voigtann1Medlem sedan juni 20019 519 inlägg
#10
$("#skapa_en_blogg").bind("submit.reg", function ( e ) {
	var that = this;
	var epost_value = $("#epost").val();
	var blogg_adress_value = $("#blogg_adress").val();
	var password_value = $("#password").val();
	var repeat_password_value = $("#repeat_password").val();
	
	$.get("test2.php?q="+blogg_adress_value, function(result){
		if(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/.test(epost_value) && result == "bilder/check.png" && /^[a-zA-Z0-9]{5,}$/.test(blogg_adress_value) && /^[a-zA-Z0-9]{5,}$/.test(repeat_password_value) && repeat_password_value == password_value){
			alert("Du har fyllt i allting rätt");
			that.submit();
		}else{
			alert("Du har fyllt i någon uppgift fel");
		}
	});
	return false;
});
noshorninMedlem sedan aug. 2008816 inlägg
#11

voigtann1 skrev:

Ja? Läs hur AJAX fungera, första A:et i AJAX betyder: Asynchronous.

din JS kod körs inte uppifrån och ner utan den kör metoden färdig och sen om AJAX koden hinner bli färdig innan du kör formuläret, då retunera den din message box... men den har inget med din submit att göra om hur den skall retuneras.

Jag förstår inte riktigt vad du menar! Hur kan jag då få "return return_var;" att köras efter allt annat?

noshorninMedlem sedan aug. 2008816 inlägg
#12

tack!

voigtann1Medlem sedan juni 20019 519 inlägg
#13

noshornin skrev:

Jag förstår inte riktigt vad du menar! Hur kan jag då få "return return_var;" att köras efter allt annat?

Det vill du inte göra, då låser du webbläsaren tills. Du få ett svar, vilket inte ge alls det önskade resultatet

138 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)