JSON probleem
Hoi,
Ik zou een controle willen toevoegen voor email al in gebruik.
Deze code heb ik een tijdje geleden hier gekregen.
Als ik mijn validateEmail.php aanroep krijg ik geen fouten.
Ik heb deze ook eventjes op get gesteld zodat ik het kon testen en daar leek alles OK.
Ik krijg geen foutmelding maar emailcheck2 wordt niet ingevuld.
Kan iemand zien wat ik fout doe?
Jan
Ik zou een controle willen toevoegen voor email al in gebruik.
Deze code heb ik een tijdje geleden hier gekregen.
Als ik mijn validateEmail.php aanroep krijg ik geen fouten.
Ik heb deze ook eventjes op get gesteld zodat ik het kon testen en daar leek alles OK.
Ik krijg geen foutmelding maar emailcheck2 wordt niet ingevuld.
Kan iemand zien wat ik fout doe?
Jan
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$.ajax({
url: 'validateEmail.php',
type: "POST",
dataType: "json",
data: ({email: email,
id: id}),
success: function(reply) {
if(reply.valid) {
//wel valid. Zie zelf wat je hier doet
$('#emailcheck2').html(reply.message);
$("#emailcheck2").css("background-color","Blue");//#00FF00
}
else
{
$('#emailcheck2').html(reply.message);
$("#emailcheck2").css("background-color","red");
}
}
,error: function(){
$('#emailcheck2').html("Oeps Fout");
$("#emailcheck2").css("background-color","green");
}
});
url: 'validateEmail.php',
type: "POST",
dataType: "json",
data: ({email: email,
id: id}),
success: function(reply) {
if(reply.valid) {
//wel valid. Zie zelf wat je hier doet
$('#emailcheck2').html(reply.message);
$("#emailcheck2").css("background-color","Blue");//#00FF00
}
else
{
$('#emailcheck2').html(reply.message);
$("#emailcheck2").css("background-color","red");
}
}
,error: function(){
$('#emailcheck2').html("Oeps Fout");
$("#emailcheck2").css("background-color","green");
}
});
Wat zegt je console? Heb je misschien een pagina waar we het kunnen zien?
Dat lijkt me correct.
Het eerste waar ik nu aan denk is, een fout in de JSON data.
Of het wordt niet erkend als json.
- Wat kan helpen, is dit toevoegen aan validateEmail.php (helemaal bovenaan)
header('Content-Type: application/json');
header('Content-Type: text/javascript');
- Er mag ook niets anders terggegeven worden. bv. een warning of notice in validateEmail.php mag absoluut niet voorkomen.
---
Kan je
- validateEmail.php eens tonen?
- Test zelf ook eens uit.
bv. Chrome developer tools -> Network.
Daar kan je zien of de request geslaagd is; krijg je te zien wat de respons was.
Het eerste waar ik nu aan denk is, een fout in de JSON data.
Of het wordt niet erkend als json.
- Wat kan helpen, is dit toevoegen aan validateEmail.php (helemaal bovenaan)
header('Content-Type: application/json');
- Er mag ook niets anders terggegeven worden. bv. een warning of notice in validateEmail.php mag absoluut niet voorkomen.
---
Kan je
- validateEmail.php eens tonen?
- Test zelf ook eens uit.
bv. Chrome developer tools -> Network.
Daar kan je zien of de request geslaagd is; krijg je te zien wat de respons was.
Gewijzigd op 24/07/2013 15:47:18 door Kris Peeters
Kris Peeters op 24/07/2013 15:09:22:
- Test zelf ook eens uit.
bv. Chrome developer tools -> Network.
Daar kan je zien of de request geslaagd is; krijg je te zien wat de respons was.
bv. Chrome developer tools -> Network.
Daar kan je zien of de request geslaagd is; krijg je te zien wat de respons was.
Gewoon op F12 drukken, dat werkt in meerdere browsers ;)
Kris Peeters op 24/07/2013 15:09:22:
- Wat kan helpen, is dit toevoegen aan validateEmail.php (helemaal bovenaan)
header('Content-Type: text/javascript');
header('Content-Type: text/javascript');
Het correct content type voor JSON is application/json, dus je zult erboven moeten zetten header('Content-Type: application/json');
O ja, inderdaad
Gewijzigd op 24/07/2013 15:46:19 door Kris Peeters
Allen bedankt.
met de hulp van U allen en chrome ben ik er door geraakt.
Er zaten dus nog echo's in de code. Ik wist niet dat dit niet mocht :( Deze zaten al in mijn voorbeeld code. en nog een paar schoonheidsfoutjes :)
mysqli_close in de verkeerde if structuur
met de hulp van U allen en chrome ben ik er door geraakt.
Er zaten dus nog echo's in de code. Ik wist niet dat dit niet mocht :( Deze zaten al in mijn voorbeeld code. en nog een paar schoonheidsfoutjes :)
mysqli_close in de verkeerde if structuur
Voor een volgende keer, roep de pagina direct aan in je browser. Dan krijg je de output ook direct in je browser scherm te zien, inclusief alle niet bedoelde echo's. Stuk makkelijker om te debuggen, ook omdat je dan tbv het debuggen nog echo's kunt plaatsen die je gewoon direct ziet.
en.. dan kun je de json in de browser selecteren en kopieren en dan op http://jsonviewer.stack.hu/ weer plakken en die laat op een mooie boomstructuur zien hoe je json is opgebouwd.
Als je dan een proxy zoals Fiddler ( http://fiddler2.com/ ) gebruikt kun je precies zien wat er tussen je browser en de server verstuurd wordt. Daarin zit o.a. een json viewer
Goeie tip TJVB.
(even ter herinnering)
1 van de punten was wel dat het Ajax-verzoek met method='post' is. Met extra data van de gebruiker.
Dat maakt het net iets moeilijker om het eindresultaat te testen in een apart venster.
Nu ja ... daar valt nog steeds wel van alles aan te doen
1 van de punten was wel dat het Ajax-verzoek met method='post' is. Met extra data van de gebruiker.
Dat maakt het net iets moeilijker om het eindresultaat te testen in een apart venster.
Nu ja ... daar valt nog steeds wel van alles aan te doen
Eens, maar als het om te testen is kan je de POST waardes even aan het begin van je script hardhandig invoeren.
Daarom gebruik ik dus fiddler, ik zie het request langs komen. Kan het herhalen maar ook de waardes wijzigen :)
Ik gebruik altijd de Chrome extensie Postman om deze requests te simuleren.
Ik gebruik maar weinig ajax, dus ook weinig ervaring :)
Toch zal ik eens kijken naar beide vernoemde programma's/extensies
@kris peeters: Wat valt er aan te doen? Ik heb al om te testen get gebruikt en daar werkte het. natuurlijk bij de post blokkeerde mijn echo's voor een juist resultaat
Toch zal ik eens kijken naar beide vernoemde programma's/extensies
@kris peeters: Wat valt er aan te doen? Ik heb al om te testen get gebruikt en daar werkte het. natuurlijk bij de post blokkeerde mijn echo's voor een juist resultaat




