login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Ajax probleem

Offline cunces - 24/02/2010 13:49 (laatste wijziging 24/02/2010 14:12)
Avatar van cuncesNieuw lid Ik probeer een simpel subscriber form aan de praat te krijgen.

Het xHRObjectSubscribe object geraakt dus nooit in status 200. status is altijd 0..

  1. function verwerkSubscription() {
  2. if (xHRObjectSubscribe.readyState == 4) {
  3. alert("testI");
  4. if (xHRObjectSubscribe.status == 200) {
  5. alert("testII");
  6. alert(xHRObjectSubscribe.status);
  7. var serverResponse = xHRObjectSubscribe.responseXML;
  8.  
  9. }
  10. }
  11. }



m'n phpcode die de form verwerkt

  1. <?php
  2. toXML("test","waarde");
  3.  
  4.  
  5. function toXML($waarden,$resultaat_int){
  6. // creeer een nieuw DOMDocument
  7. $doc = new DOMDocument("1.0");
  8.  
  9. // formateer de output
  10. $doc->formatOutput = true;
  11.  
  12. // creer een root element 'response'
  13. $response = $doc->createElement('antwoord');
  14. // hang dit root element aan het document
  15. $response = $doc->appendChild($response);
  16.  
  17. // creer een element 'resultaat'
  18. $resultaat = $doc->createElement('resultaat');
  19. // hang dit element aan het root element
  20. $resultaat = $response->appendChild($resultaat);
  21.  
  22. $value0 = $doc->createTextNode($resultaat_int);
  23. $value0 = $resultaat->appendChild($value0);
  24.  
  25. // creer een element 'meldingenlijst'
  26. $meldinglijst = $doc->createElement('meldinglijst');
  27. // hang dit element aan het root element
  28. $meldinglijst = $response->appendChild($meldinglijst);
  29.  
  30. // voor elke waarde uit waarden als een var $melding
  31. foreach($waarden as $melding){
  32.  
  33. // creer een melding element en hangt het aan het meldinglijst element
  34. $meldingitem = $doc->createElement('melding');
  35. $meldingitem = $meldinglijst->appendChild($meldingitem);
  36.  
  37. // zet de string melding in een textnode en hang het in het element melding
  38. $value = $doc->createTextNode($melding);
  39. $value = $meldingitem->appendChild($value);
  40. }
  41.  
  42. // output de xml
  43. echo $doc->saveXML();
  44. }
  45.  
  46.  
  47. ?>


Ik weet dat ik de form input nog niet verwerk. Het gaat 'm voor nu om het feit dat het systeem niet werkt.

Kan iemand zeggen waar het fout loopt?

18 antwoorden

Gesponsorde links
Offline marten - 24/02/2010 14:09
Avatar van marten Beheerder tip: ga gebruik maken van jquery Het ajax element wordt dan veel makkelijker werkbaar
Bedankt door: cunces
Offline cunces - 24/02/2010 14:13
Avatar van cunces Nieuw lid je bent de zoveelste die me dat zegt, maar ik werk liever zonder librairy 
Offline YesItIsChris - 24/02/2010 19:04
Avatar van YesItIsChris Nieuw lid Komt die wel tot alert("testI");? Waarscheinlijk niet tog?
Bedankt door: cunces
Offline cunces - 24/02/2010 19:38
Avatar van cunces Nieuw lid jawel daar komt hij bij, en als status print hij altijd 0..
Offline Stijn - 24/02/2010 19:53
Avatar van Stijn PHP expert Gebruik je open() en send()? Open je die file wel met het http protocol? Ik had dat probleem ook deze week. Als je .html met javascript/ajax opent als file (file:///C...) werkt dat niet. Je moet het via http://localhost benaderen.
Bedankt door: cunces
Offline cunces - 24/02/2010 20:04
Avatar van cunces Nieuw lid xHRObjectSubscribe.open("POST", "http://cunces.byethost33.com/verwerkForm.php", true);

zo gebeurt het
Offline Stijn - 24/02/2010 21:06
Avatar van Stijn PHP expert Ja maar de file waarin jou javascript draait moet ook in het HTTP protocol draaien.
Offline genkstar - 24/02/2010 21:55
Avatar van genkstar Nieuw lid Je gebruikt in je php file toXML($param1, $param2) voordat je deze hebt gedefineerd.. Gaat ook moeilijk werken hé
Offline cunces - 24/02/2010 23:36 (laatste wijziging 25/02/2010 01:48)
Avatar van cunces Nieuw lid
Citaat:
Je gebruikt in je php file toXML($param1, $param2) voordat je deze hebt gedefineerd.. Gaat ook moeilijk werken hé

ik geef onmiddellijk strings mee, daar is niks mis mee hoor  

Citaat:
Ja maar de file waarin jou javascript draait moet ook in het HTTP protocol draaien.

ahja, dit is het geval. Ik werk nu niet met xamp ofzo, doe direkt alles online.



edit:
It appears that you are running into a same-origin policy issue in Firefox (see https://develop...JavaScript for more information). Firefox does not allow JavaScript code to request XML resources from domains other than the one hosting the JavaScript code.

Dit is het geval bij mij. Hou jullie op de hoogte of dit het probleem was.


editII: ik host nu m'n javascript code en het phpscript op dezelfde server, dus normaal geen probleem.. maar krijg nog steeds 0 als status. (sidenote: de basis pagina is wel nog steeds op een andere server(blogspot.com, en blogspot interpreteert geen php, dus moet ik het php-en javascript wel elders hosten))
Offline genkstar - 25/02/2010 02:42
Avatar van genkstar Nieuw lid wil je misschien de php file direct uitvoeren. en foutmeldingen hier posten. Want ik weet bijna zeker dat het een foutmelding geven, je gebruikt de functie voordat je deze hebt gedefineerd.
Bedankt door: cunces
Offline Stijn - 25/02/2010 11:20
Avatar van Stijn PHP expert @genkstar: dan zou zijn readyState op 4 moeten staan en status op 200...
Offline cunces - 25/02/2010 11:36
Avatar van cunces Nieuw lid
genkstar schreef:
wil je misschien de php file direct uitvoeren. en foutmeldingen hier posten. Want ik weet bijna zeker dat het een foutmelding geven, je gebruikt de functie voordat je deze hebt gedefineerd.

nee hij echod "waarde" dus geen fouten. Kan iemand mss mbv firebug zeggen wat het probleem is.. waar ik moet op letten?
Offline Stijn - 25/02/2010 11:44
Avatar van Stijn PHP expert Geef eens de volledige ajax oproep. Van open() tot send().
Offline cunces - 25/02/2010 11:46 (laatste wijziging 25/02/2010 11:47)
Avatar van cunces Nieuw lid
  1. function getXHRObject() {
  2. var xHRObject = false;
  3.  
  4. if (window.XMLHttpRequest) { // Mozilla, Safari,...
  5. xHRObject = new XMLHttpRequest();
  6. if (xHRObject.overrideMimeType) {
  7. xHRObject.overrideMimeType('text/xml');
  8. // See note below about this line
  9. }
  10. } else if (window.ActiveXObject) { // IE
  11. try {
  12. xHRObject = new ActiveXObject("Msxml2.XMLHTTP");
  13. } catch (e) {
  14. try {
  15. xHRObject = new ActiveXObject("Microsoft.XMLHTTP");
  16. } catch (e) {}
  17. }
  18. }
  19.  
  20. if (!xHRObject) {
  21. alert('Giving up :( Cannot create an XMLHTTP instance');
  22. }
  23.  
  24. return xHRObject;
  25.  
  26. }
  27.  
  28. var xHRObjectSubscribe = getXHRObject();
  29.  
  30.  
  31.  
  32. function subscribe(formulier) {
  33. var email=formulier.email.value;
  34. alert(email);
  35. xHRObjectSubscribe.open("POST", "http://cunces.byethost33.com/verwerkform.php", true);
  36. // Derde parameter (boonlean) is de keuze of we een synchroon of een asynchroon vraagje willen stellen. Zet je deze op ‘false’, dan zal je pagina bevriezen waneer de aanvraag wordt uitgevoerd.
  37. xHRObjectSubscribe.onreadystatechange = verwerkSubscription;
  38. var information = "email=" + encodeURIComponent(email); // + "&paswoord=" + encodeURIComponent(paswoord);
  39. xHRObjectSubscribe.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  40. xHRObjectSubscribe.send(information);
  41. }


ik ben wel 95% zeker dat het niet aan dit stuk code ligt
Offline genkstar - 25/02/2010 13:41
Avatar van genkstar Nieuw lid Blijkbaar moet je bij je form een attribute toevoegen onsubmit="return false;" omdat je met AJAX werkt.
Kan je dit eens proberen dan?
Offline Stijn - 25/02/2010 13:49
Avatar van Stijn PHP expert Als ik naar die url (http://cunces.byethost33.com/verwerkform.php) surf, dan krijg ik een 404 page not found melding. Lijkt me logisch waarom het niet werkt.
Offline cunces - 25/02/2010 14:21
Avatar van cunces Nieuw lid
Citaat:
Blijkbaar moet je bij je form een attribute toevoegen onsubmit="return false;" omdat je met AJAX werkt.
Kan je dit eens proberen dan?

<form action='#' onsubmit='subscribe(this); return false'>
dit doe ik dus al

Citaat:
Als ik naar die url (http://cunces.byethost33.com/verwerkform.php) surf, dan krijg ik een 404 page not found melding. Lijkt me logisch waarom het niet werkt.

ik heb gewoon de url veranderd voor op het forum.
Offline genkstar - 25/02/2010 17:59
Avatar van genkstar Nieuw lid Als je een voorbeeld plaats, kan ik misschien eens debuggen met firebug
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.19s