webForumDet fria alternativet

$.get innuti $.submit

JavaScript

12 svar · 2 043 visningar · startad av noshornin

Medlem sedan aug. 2008815 inlägg
Frågan#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: ....

Medlem 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?

Medlem sedan aug. 2008815 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.

Medlem sedan juni 20019 519 inlägg
#4

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

Medlem sedan aug. 2008815 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";
}
Medlem sedan aug. 2008815 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.

Medlem 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.

Medlem 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.

Medlem sedan aug. 2008815 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"

Medlem 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;
});
Medlem sedan aug. 2008815 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?

Medlem sedan aug. 2008815 inlägg
#12

tack!

Medlem 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

716 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
576 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
576 ms — ändringar (db)