login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[AJAX] 'Error'

Offline nick5556 - 05/12/2011 12:11 (laatste wijziging 05/12/2011 12:11)
Avatar van nick5556PHP beginner Hallo,

Ik loop nu al dagen tegen het zelfde probleem aan. Het script wat ik heb stuurt een ajax request om een PHP-script uit te voeren, de data die hier uit komt word doorgestuurd naar een andere functie die de pagina weer veranderd. Het probleem is alleen dat ik al een 'error' krijg vóór de ajax request(dit denk ik tenminste).

  1. var js = {
  2.  
  3. changePage: function(newContent, w, h) {
  4.  
  5. $('#changeable').slideToggle('slow', function() {
  6. $("#container").animate({
  7. width:w
  8. });
  9. $("#changeable").css({
  10. height:h
  11. });
  12. $("#changeable").load(newContent + "?rand="+Math.random()*99, function () {
  13. $("#changeable").slideToggle('slow');
  14. });
  15.  
  16.  
  17. });
  18.  
  19. },
  20.  
  21. runScript: function(script, parameter1, parameter2) {
  22.  
  23. $.ajax({
  24.  
  25. url: script,
  26. data: function() {
  27. if(typeof(parameter1) !== "undefined") {
  28. if(typeof(parameter2) !== "undefined") {
  29. alert("twee parameters");
  30. return "p1=" + parameter1 + "&p2=" + parameter2;
  31. }
  32. return "p1=" + parameter1;
  33. } else {
  34. return "r=" + Math.random() * 100;
  35. }
  36. },
  37. beforeSend: function(data) {
  38. js.changePage('pages/loader.html', 200, 100);
  39. },
  40. success: function(data) {
  41.  
  42. var data_array = data.split("-");
  43.  
  44. js.changePage(data_array[0], data_array[1], data_array[2]);
  45.  
  46. }
  47. });
  48.  
  49. },
  50.  
  51. loginForm: function() {
  52.  
  53. var formData = document.forms["login"];
  54.  
  55. if(formData['username'].value == "") {
  56. $("#error").html('U heeft geen gebruikersnaam ingevuld!');
  57. $("#error").fadeIn('slow')
  58. return;
  59. }
  60. if(formData['password'].value == "") {
  61. $("#error").html('U heeft geen wachtwoord ingevuld!');
  62. $("#error").fadeIn('slow')
  63. return;
  64. }
  65.  
  66. alert('test'); // Deze wordt niet uitgevoerd?
  67. js.runScript('../../scripts/login.php', formData['username'], formData['password']);
  68.  
  69.  
  70. }
  71.  
  72. };


De enige alert die ik krijg is er een met het woord 'error' erin. Ik heb geen idee meer waar dit aan zou kunnen liggen.

8 antwoorden

Gesponsorde links
Offline Giant - 06/12/2011 00:41 (laatste wijziging 06/12/2011 02:46)
Avatar van Giant PHP beginner
  1. if(typeof(parameter1) !== "undefined") {

mag worden:
  1. if(parameter1 != undefined) {


undefined is een constant in javascript, op jou manier kijk je na op parameter1 van het type string is, hetzelfde geldt voor 1 regel verder met parameter2.

Verder zul je toch echt de volle error moeten geven, want aan "error" alleen hebben we niks....
Offline cyberninjah - 06/12/2011 10:28
Avatar van cyberninjah Lid Ik denk dat hij geen meer informatie krijgt dan alleen een alert box met "error"
Offline nick5556 - 16/12/2011 09:06 (laatste wijziging 16/12/2011 09:08)
Avatar van nick5556 PHP beginner Het enige wat ik krijg is inderdaad een alert box met 'error'. Die constants zal ik aanpassen. Wat ik vooral raar vind is dat de alert box met 'test' nergens terug te vinden is.

Edit: Het word uitgevoerd via de functie 'loginForm()'.
Offline Giant - 16/12/2011 11:58
Avatar van Giant PHP beginner En weet je wel zeker dat loginForm() word aangeroepen?
Offline nick5556 - 21/12/2011 12:35
Avatar van nick5556 PHP beginner Ja, want als ik niets invul, word wel de tekst "U heeft geen gebruikersnaam ingevuld" weegegeven.
Offline Giant - 22/12/2011 17:25
Avatar van Giant PHP beginner
  1. loginForm: function() {
  2.  
  3. var formData = document.forms["login"];
  4.  
  5. if(formData['username'].value == "") {
  6. $("#error").html('U heeft geen gebruikersnaam ingevuld!');
  7. $("#error").fadeIn('slow')
  8. return;
  9. }
  10. if(formData['password'].value == "") {
  11. $("#error").html('U heeft geen wachtwoord ingevuld!');
  12. $("#error").fadeIn('slow')
  13. return;
  14. }
  15.  
  16. alert('test'); // Deze wordt niet uitgevoerd?
  17. //js.runScript('../../scripts/login.php', formData['username'], formData['password']);
  18. }


Krijg je zo wel de alert('test'); te zien?
Offline nick5556 - 22/12/2011 21:53 (laatste wijziging 22/12/2011 21:58)
Avatar van nick5556 PHP beginner hmm. Het werkt nu wel (de error heb ik nu kunnen traceren via een betere foutenconsole). Het enige probleem is dat login.php alleen aangeroepen word met het willekeurige getal, en niet de ingevulde data. Ik heb deze aanpassingen gedaan.

  1. loginForm: function() {
  2.  
  3. var formData = document.forms["login"];
  4.  
  5. if(formData['username'].value == "") {
  6. $("#error").html('U heeft geen gebruikersnaam ingevuld!');
  7. $("#error").fadeIn('slow')
  8. return;
  9. }
  10. if(formData['password'].value == "") {
  11. $("#error").html('U heeft geen wachtwoord ingevuld!');
  12. $("#error").fadeIn('slow')
  13. return;
  14. }
  15.  
  16. js.runScript('scripts/login.php', formData['username'].value, formData['password'].value); // Hier een aantal aanpassingen.
  17.  
  18.  
  19. }


Nu vraag ik me af waarom de functie runScript de twee parameters niet meegeeft.

EDIT: De waarde formData['username'].value bestaat wel voordat ik het meestuur naar de functie, zodra ik deze probeer aan te roepen in de functie runScript zijn de parameters leeg.

EDIT2: De waardes van parameter1 en parameter2 zijn leeg zodra ik ze in de ajax request aanroep.
Offline Giant - 22/12/2011 23:02 (laatste wijziging 22/12/2011 23:04)
Avatar van Giant PHP beginner Waarom gebruik je niet gewoon jQuery voor het ophalen van de username en password? Als ik je script goed uitlees gebruik je toch al jQuery...

  1. runScript: function(script) {
  2. $.ajax({
  3. url: script,
  4. data: $('#formID').serialize() + "r=" + (Math.random() * 100),
  5. beforeSend: function(data) {
  6. js.changePage('pages/loader.html', 200, 100);
  7. },
  8. success: function(data) {
  9. var data_array = data.split("-");
  10. js.changePage(data_array[0], data_array[1], data_array[2]);
  11. }
  12. });
  13.  
  14. }


Met $.serialize(); creëer je de volgende string:
"veld=value&veld2=value2&veld3=value3&etc=etc"
Waar "veld" afhankelijk is van de naam van het betreffende veld, en value van de waarde van de veld.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.182s