[ajax] xml uitlezen in ff

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Stijn

stijn

06/04/2008 17:21:00
Quote Anchor link
Hallo,

Ik ben bezig met de foutafhandeling van een script dat xml genereerd. Wanneer er iets fout gaat word het volgende xml bestandje teruggegeven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?xml version="1.0" ?>
 <!DOCTYPE error [
  <!ELEMENT error (#PCDATA)>
 ]>
<error>
foutmelding
</error>


Dit is de javascript die hem moet verwerken(dit is nog enkel om te kijken wat de browser precies doet, als hij doet wat ik wil dat hij doet ga ik kijken of de tagname error is.):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    function get_file(file,functie)
    {
     var xmlDoc;
     if (document.implementation && document.implementation.createDocument)
     {
        xmlDoc = document.implementation.createDocument("", "doc", null);
        xmlDoc.onload =  eval(functie);
     }
     else if (window.ActiveXObject)
     {
      xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
      xmlDoc.onreadystatechange = function ()
      {
        if (xmlDoc.readyState == 4)
         eval(functie);
       }
     }
     xmlDoc.load(file);
    }
    function check_updates(xmlDoc)
    {
     alert(xmlDoc.firstChild.tagName);
    }


Dit stukje html roept alles aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<script type="text/javascript" src="javascript_test.js"></script>
<button onclick="get_file('check_updates.php','check_updates(xmlDoc);')" name=check >check</button>


IE7 geeft terug: error, FF geeft terug: doc , opera geeft terug: undefined

Heeft iemand een idee waaraan dat kan liggen?
Gewijzigd op 01/01/1970 01:00:00 door Stijn
 
PHP hulp

PHP hulp

09/05/2024 01:59:03
 
Christiaan Baartse

Christiaan Baartse

06/04/2008 17:38:00
Quote Anchor link
waarom eval(functie); ?
In javascript zijn functies objecten, en kan je die dus gewoon als parameter meegeven.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
function get_file(file,functie){
var xmlDoc;
functie(xmlDoc);
}
<button onclick="get_file('check_updates.php', check_updates)" name=check >check</button>


Bepaal je zelf de xml die terug komt?

Ohwja en als je normaal wilt kunnen debuggen, zorg dat je de Firebug extensie voor Firefox download. Als je ook maar iets met javascript doet is het een echte must have.
Gewijzigd op 01/01/1970 01:00:00 door Christiaan Baartse
 
Stijn

stijn

06/04/2008 18:24:00
Quote Anchor link
Firebug is al geïnstalleerd(geen foutmeldingen).
Parameters in javascript zal ik ff aanpassen
Ik weet ook zeker dat het xml bestand goed is, als ik het namelijk los bekijk is hij ook goed.
 
Christiaan Baartse

Christiaan Baartse

06/04/2008 18:51:00
Quote Anchor link
Genereer je de XML alleen voor dat stuk javascript of is er een andere reden dat je XML gebruikt?
Ik gebruik namelijk veel liever JSON voor ajax calls
 
Stijn

stijn

06/04/2008 19:12:00
Quote Anchor link
Nee, alleen voor dat stuk javascript..
 
Christiaan Baartse

Christiaan Baartse

06/04/2008 19:40:00
Quote Anchor link
Als je op deze manier AJAX calls gaat maken wordt het pas echt leuk om te doen :D

Je error php page ding
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
$errors
= array():
$errors[] = 'foutmelding';
print(json_encode($error));
[
/code]

Om het aan de client side op te halen kan je 2 dingen doen. Een JS library gebruiken, of je eigen ajax functie schrijven.
Voor nu ga ik voor de makkelijke methode, namelijk de eerste. JQuery is zo'n library http://docs.jquery.com/

Om de foutmelding nu in js te krijgen doen we het volgende

<script type="text/javascript" src="jquery-1.2.3.js"></script>
<script type="text/javascript">
function get_the_file(){
$.getJSON('
de mooie php pagina\'s url', function(data){

// Dit toont onze eerste error melding uit de array.
// Data is dus eigenlijk de array die we in onze php pagina hadden!

alert(data[0]);

});
}

</script>


<button onclick="get_the_file();" name=check >check</button>


Om dan helemaal in de jquery spirit te blijven kan het ook nog zo

<script type="text/javascript" src="jquery-1.2.3.js"></script>
<script type="text/javascript">
$(function(){

$("#check").click(function(){
$.getJSON('de mooie php pagina\'s url', function(data){

// Dit toont onze eerste error melding uit de array.
// Data is dus eigenlijk de array die we in onze php pagina hadden!
alert(data[0]);

});
});


});

</script>

<button id="check"  >check</button>
Gewijzigd op 01/01/1970 01:00:00 door Christiaan Baartse
 
Stijn

stijn

06/04/2008 19:47:00
Quote Anchor link
Hij geeft iets tussen <error></error> terug als er iets fout is gegaan. Maar als alles goed gaat geeft hij een hele lijst met informatie terug.


Is er een functie die xmlDoc.xml kan vervangen die in FF werkt?
Gewijzigd op 01/01/1970 01:00:00 door stijn
 
Christiaan Baartse

Christiaan Baartse

06/04/2008 19:58:00
Quote Anchor link
Euh ik snap even het verschil niet tussen jouw bovenstaande methode en de mijne eigenlijk..
Kan je iets meer toelichten? Mischien ook waarvoor het dient, oftewel wat gebeurt er als er geen error gestuurt wordt.
 
Stijn

stijn

06/04/2008 20:08:00
Quote Anchor link
Het is een poker spel, zo kan de beurt, spelers, geld, boden, open liggende kaarten veranderen.
Als er geen error word gestuurd, word er zoiets teruggestuurd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<updates>
 <beurt changed=1>5</beurt>
 <boden changed=1>
  <totaalbod>100050</totaalbod>
  <bod speler="103">500</bod>
  <bod speler="505">1000</bod>
  <maxbod>1000</maxbod>  
 </boden>
 <ronde changed=1>
  <veld>
   <kaart>link</kaart>
   //nog 4x kaart
  </veld>
  <gebruiker>
   2x kaart
  </gebruiker>
 </ronde>
 <spelers changed=0>
 </spelers>
</updates>
 
Christiaan Baartse

Christiaan Baartse

06/04/2008 20:10:00
Quote Anchor link
Tja daar was ik dus al bang voor ;)
Je zou dat ook allemaal om kunnen gooien naar JSON, ik weet niet in welk stadium je bent op dit moment met de Javascript.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.