Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[AJAX/PHP] IE kan pagina niet laden

Pagina: 1
Acties:

  • Piels
  • Registratie: Maart 2001
  • Laatst online: 21-11 12:44
Het volgende.

Ik ben voor de plaatselijke voetbal vereniging bezig met een website die een verjaardag kalender laat zien middels deze PHP pagina.

HTML:
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
<? 
    session_start();
    
    include("includes/inc_functions_date.php");
    include("includes/inc_header.php");
?>

<script language=JavaScript> ajax_do('ajax_verjaardagen.php?maand=01');</script>

<table width=100% cellpadding="0" cellspacing="0">
        <tr>
            <td colspan="2"><h1>Verjaardags kalender</h1><br /></td>
        </tr>   
        <tr>
            <td>
                <form name="form_maanden">
                    <select name="maanden" onchange="ajax_do('ajax_verjaardagen.php?maand='+maanden.value) ">
                        <option value ="">Selecteer een maand..
                        <option value="01" selected>Januari
                        <option value="02">Februari
                        <option value="03">Maart
                        <option value="04">April
                        <option value="05">Mei
                        <option value="06">Juni
                        <option value="07">Juli
                        <option value="08">Augustus
                        <option value="09">September
                        <option value="10">Oktober
                        <option value="11">November
                        <option value="12">December
                        <option value="13">Alle maanden
                    </select>
                </form>
            </td>
            <td align="right">
                <div id="num_jarigen">
                
                </div>
            </td>
        </tr>
   </table>
   <p></p> <p></p>
    <div id="jarigen">
            
    </div>


Als bovenstaande pagina geladen wordt, is het de bedoeling dat de jarigen van de huidige maand (staat nu even vast op 01 ivm testen) worden getoond. In FireFox is dit geen probleem. Echter in Internet Explorer krijg ik de melding dat de pagina niet geladen kan worden en dan wordt dus ook de bewerking afgebroken.

Als ik het ajax script uitvoer, krijg ik netjes de juiste output. Het gaat mis op de volgende regel:

HTML:
1
<script language=JavaScript> ajax_do('ajax_verjaardagen.php?maand=01');</script>


Als ik deze weghaal, wordt de pagina netjes geladen en kan ik gewoon gebruik maken van het AJAX script.
Als ik dus de pagina voor het eerst laadt en wil dat AJAX meteen iets laat zien, dan geeft IE dus de melding dat hij de pagina niet kan laden.

AJAX script:

JavaScript:
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
var url = document.location.href + '';
var xend = url.lastIndexOf("/") + 1;
var base_url = url.substring(0, xend);

var jsel;

function ajax_do (url) {
        // Does URL begin with http?
        if (url.substring(0, 4) != 'http') {
                url = base_url + url;
        }

                if (jsel != null) {
                        document.body.removeChild(jsel);
                }
        // Create new JS element
        jsel = document.createElement('SCRIPT');
        jsel.type = 'text/javascript';
        jsel.src = url;


        // Append JS element (therefore executing the 'AJAX' call)
        document.body.appendChild (jsel);
       
}

Windows Phone Apps: Belstatus, Pinautomaten


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Je sluit je script-element niet af...

Intentionally left blank


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 16-11 16:38

giMoz

iets met meester...

ik weet niet precies wat je aan het doen bent hier, maa rhet is iig geen ajax..

Ajax is niet een SCRIPT element aan een pagina toevoegen met javascript in de hoop dat er dan wat uitgevoerd wordt...

Ajax is het ophalen van data (liefst in xml formaat) van de server zonder dat de pagina refreshed m.b.v. het xmlhttp object....

tot zover de feedback over je ajax gebruik.

wat geeft ajax_verjaardagen.php terug? xml? javascript? html?

Of niet natuurlijk...


  • Piels
  • Registratie: Maart 2001
  • Laatst online: 21-11 12:44
@crisp, hier heb ik dat wel, maar werkt ook niet.

HTML output

Hier de IE foutmelding. Wel even in IE opstarten dus :)

Windows Phone Apps: Belstatus, Pinautomaten


  • magic45
  • Registratie: Mei 2002
  • Laatst online: 20-11 14:38
nevermind het oude dan...

probeer anders die js functie eens via een onload te starten...

[ Voor 83% gewijzigd door magic45 op 04-01-2007 09:00 ]


  • Piels
  • Registratie: Maart 2001
  • Laatst online: 21-11 12:44
Heb ik geëdit magic..
Was mijn fout. :)

[ Voor 3% gewijzigd door Piels op 04-01-2007 09:02 ]

Windows Phone Apps: Belstatus, Pinautomaten


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 16-11 16:38

giMoz

iets met meester...

je weet dat er een typfout in zit? Ajax_do.....

(verder vind ik dit wel een hele vage manier van werken maar goed dat mag je zelf weten...)

edit:
die zit er nu al niet meer in dus....

[ Voor 13% gewijzigd door giMoz op 04-01-2007 09:04 ]

Of niet natuurlijk...


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

[code=html,8]<script language=JavaScript>jax_do('ajax_verjaardagen.php?maand=01');</script>[/code]
=>
[code=html,8]<script language=JavaScript>ajax_do('ajax_verjaardagen.php?maand=01');</script> [/code]

zie je de 'a' na het > tekentje?


Highlighter doet moeilijk.

Maar ik heb je gegenereerde HTML code bekeken, en waarom escape jij je ' ?

Je moet alleen de " escapen, laat die eens weg, speel daar eens mee

[ Voor 27% gewijzigd door Snake op 04-01-2007 09:12 ]

Going for adventure, lots of sun and a convertible! | GMT-8


  • Piels
  • Registratie: Maart 2001
  • Laatst online: 21-11 12:44
Als het goed is staat het er nu goed.
Lijkt op een bug in de ubb code. Hij pakt >a niet. Er staat dus gewoon ajax_do

@giMoz. Hoe zou ik het dan moeten doen als ik content wil laten zien bij het laden van een pagina?

Windows Phone Apps: Belstatus, Pinautomaten


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 16-11 16:38

giMoz

iets met meester...

zie ook eerste post:
de data ophalen van de server (dus zorgen dat de php een xml bestand teruggeeft met de verjaardagen erin)
en dan met javascript die xml uitpluizen om de html te creeren en te zetten...

Maar zeker geen javascript ophalen en die vervolgens proberen uit te voeren...

(ben wel benieuwd hoe je deze manier van werken verzonnen/gelezen hebt)

Of niet natuurlijk...


  • avon
  • Registratie: November 2002
  • Laatst online: 27-06 12:38
offtopic:
AvOn mompelt iets over selectedIndex

Gratis webwinkel beginnen? Met Onetoshop.com kunt u direct beginnen!


  • Piels
  • Registratie: Maart 2001
  • Laatst online: 21-11 12:44
Dan zal ik daar eens naar gaan kijken.

Maar zoals ik het bij de dropdown list gebruik is toch wel correct?

Windows Phone Apps: Belstatus, Pinautomaten


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Piels schreef op donderdag 04 januari 2007 @ 09:14:
Dan zal ik daar eens naar gaan kijken.

Maar zoals ik het bij de dropdown list gebruik is toch wel correct?
neen daarvoor moet je toch die selectedIndex gebruiken, maar ik vind het gek dat IE daar over valt, want het wordt toch pas uitgevoerd bij een onchange, niet onload?

Maar heb je al eens gekeken naar je overdreven veel escapen van je ' ?

[ Voor 8% gewijzigd door Snake op 04-01-2007 09:15 ]

Going for adventure, lots of sun and a convertible! | GMT-8


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 16-11 16:38

giMoz

iets met meester...

dat klinkt al beter maar zou idd zoals avon al zegt
HTML:
1
<select id="sladiebla" onchange="do_ajax_verjaardagen(this.items(this.selecteditem).value);">

en dan kan je in de onload van je pagina nml zeggen:
HTML:
1
<body onload="do_ajax_verjaardagen(datetime.now().month());">


en vanaf dan is het allemaal dezelfde code...


(ff uit m'n hoofd hoor, daadwerkelijke aanroepen kunnen iets anders zijn.

Of niet natuurlijk...


  • Rowdy.nl
  • Registratie: Juni 2003
  • Laatst online: 21-11 15:31

Rowdy.nl

Koekje d'r bij?

Een paar puntjes, je maakt globale variablen aan, die je ook in je functie gebruikt. Opsich geen probleem, maar je maakt globaal 'url' aan, en vervolgens geef je ook nog eens parameter genaamd 'url' mee aan je functie...?

Verder wat GiMoz bedoeld is dat je bij een Ajax script (dit is niks ajax nl) dmv het xmlhttp object (xml) data ophaald en in je scriptje plaatst. Jij maakt een dynamisch javascriptje aan wat je wat divjes laat vullen, of niet? Normaal heb je een statisch javascriptje wat dus via dat xmlhttp object data ophaalt en dat in de divjes zet.

Rowdy.nl - X++ by day. C# by night. I drink coffee in the morning and beer in the evening.


  • Piels
  • Registratie: Maart 2001
  • Laatst online: 21-11 12:44
Ik moet dus een xml bestand maken aan de hand van de gegevens in mijn MySQL database? Of moet ik de gevens overzetten naar alleen een xml bestand?

En vervolgens lees ik het bestand uit als ik het goed begrijp.

Windows Phone Apps: Belstatus, Pinautomaten


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 16-11 16:38

giMoz

iets met meester...

je genereerd een xml bestand a.d.h.v. de gegevens in je MySQL database idd, dat is het enige wat php voor je doet dan.
De rest is javascript,
De javascript bepaald dus waar het komt te staan
de php bepaald welke data er wordt laten zien a.d.v. de querystring van de pagina die je wel weer met javascript genereerd.

Of niet natuurlijk...


  • Piels
  • Registratie: Maart 2001
  • Laatst online: 21-11 12:44
Het is met even onduidelijk met het xml bestand.

Ik heb dus ergens op mijn webspace fysiek een .xml bestand staan? Dat ik elke keer overschrijf met nieuwe data uit MySQL? Of hoe moet ik dat xml bestand zien?

Windows Phone Apps: Belstatus, Pinautomaten


  • giMoz
  • Registratie: Augustus 2002
  • Laatst online: 16-11 16:38

giMoz

iets met meester...

je xml bestand is een php bestand wat zich voordoet als een xml bestand
(normaal gesproken doet een php bestand zich voor als een html bestand...)

Of niet natuurlijk...


  • Piels
  • Registratie: Maart 2001
  • Laatst online: 21-11 12:44
Mijn ajax_verjaardagen.php zag er dus zo uit:

PHP:
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
<?

    include('includes/inc_connect_mysql.php');
    include('includes/inc_functions.php');

    
    $maand = addslashes($_GET['maand']);
    
    $result = "SELECT * FROM verjaardagen WHERE MID(datum,4,2) = '$maand' ORDER BY 'datum' ASC";
    $query = mysql_query($result) or die(mysql_error());
    
    $num_jarigen = "Er zijn deze maand <b>" . mysql_num_rows($query) . "</b> jarigen";
    $html .= "<table width=100% cellpadding=\"0\" cellspacing=\"0\">";
    $html .= "<tr><td><b>Datum</b></td><td><b>Jarigen</b></td></tr><tr><td colspan=2>&nbsp</td></tr>";
    
    while ($record = mysql_fetch_object($query))
    {           

        $html .= "<tr onMouseover=\"this.bgColor='#f2f2f2'\" onMouseout=\"this.bgColor='#FFFFFF'\" onclick=\"document.location='members/edit_verjaardag.php?".$record->datum."'\">";
        $html .= "<td valign=\"top\" width=180>$record->datum</td>";
        $html .= "<td width=675>$record->jarig</td>";
        $html .= "</tr>";
    }
    
    $html .= "</table>";
    $html .= "<hr>"; 
    $html = str_replace("\n","",nl2br($html));
    $html = str_replace("\r","",$html);

?>

var myFirstDiv = document.getElementById('jarigen');
myFirstDiv.innerHTML = '<?php echo (addslashes($html)); ?>';

var mySecondDiv = document.getElementById('num_jarigen');
mySecondDiv.innerHTML = '<?php echo (addslashes($num_jarigen)); ?>';


En dus inplaats van die HTML tags, worden het xml tags als ik het goed begrijp?

Windows Phone Apps: Belstatus, Pinautomaten


  • Rowdy.nl
  • Registratie: Juni 2003
  • Laatst online: 21-11 15:31

Rowdy.nl

Koekje d'r bij?

Ga eerst maar eens een aantal tutorials doornemen wat Ajax precies is, en hoe je het kunt toepassen...
Dit is een mooie om te beginnen: http://www.xul.fr/en-xml-ajax.html

Hier staat een voorbeeld wat je kunt ombouwen naar jouw situatie: http://www.captain.at/howto-ajax-process-xml.php

Natuurlijk is de xml.php in dat voorbeeld jouw verjaardagen.php, en doet die verjaardagen.php een select op de database en maakt daar een mooi XML document van.
Ook wordt het script in het voorbeeld aangeroepen met een knop, dit kun jij natuurlijk ook doen met je dropdown list. :)

[ Voor 7% gewijzigd door Rowdy.nl op 04-01-2007 11:26 . Reden: Linkje voor te beginnen toegevoegd ]

Rowdy.nl - X++ by day. C# by night. I drink coffee in the morning and beer in the evening.


  • Piels
  • Registratie: Maart 2001
  • Laatst online: 21-11 12:44
:)

Dank je. Ik zal er eens naar gaan kijken.

Windows Phone Apps: Belstatus, Pinautomaten


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

XML is zeker geen must bij Ajax (what's in a name?); plain text, HTML of een of ander serialized formaat (JSON bijvoorbeeld) is ook allemaal mogelijk. XML is toch niet bepaald lightweight en vereist behoorlijk wat code om daar de data op een bruikbare manier uit te krijgen.

Maar ik zou ook zeker niet op een dergelijke manier script-elementen gaan appenden. Zeker tijdens de renderfase is dat volgens mij ook wat hier in IE problemen oplevert. Gewoon XMLHttpRequest gebruiken...

[ Voor 3% gewijzigd door crisp op 04-01-2007 16:02 ]

Intentionally left blank

Pagina: 1