Ajax werkt niet in Firefox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cedric

Cedric

21/01/2008 19:32:00
Quote Anchor link
Hey iedereen,

Ik heb een probleem waar ik mij al lang aan erger maar nog nooit uitleg over gevraagd heb. Als ik iets maak met ajax dan werkt dat gewoon in IE en in safari maar niet in FF. Ik werk zelf namelijk altijd in Firefox dus dat is erg vervelend. Het is zelfs iets zeer kleins wat gewoon niet werkt.
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
function add_record()
{
    var url = "functions.php?rand=" + Math.random() + "&action=add&content=" + document.getElementById('content').value;
    xmlHttp = GetXmlHttpObject(showRecord);
    xmlHttp.open("GET", url , true);
    xmlHttp.send(null);
}

function showRecord()
{
    if(xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
    {
        if(xmlHttp.status == 200)
        {
            document.getElementById('list').innerHTML = xmlHttp.responseText;
        }
        else
        {
            alert( xmlHttp.statusText);
        }
    }
}

Functions.php bevat nu gewoon een domme echo om wat te testen. Hij zou nu gewoon de div met id 'list' die waarde moeten geven... Maar in FF doet hij helemaal niks? Hoe komt dit en wat is hieraan te doen?

Alvast bedankt
 
PHP hulp

PHP hulp

22/12/2024 06:34:16
 
Kumkwat Trender

Kumkwat Trender

21/01/2008 19:49:00
Quote Anchor link
heb je dit ook in je script staan?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
@end @*/
 
Cedric

Cedric

21/01/2008 19:55:00
Quote Anchor link
Het ging eerst nog niet, maar nu plots wel :) Ik heb mijn ajax.js aangepast en deze ziet er nu zo uit:

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
51
52
53
54
55
56
57
58
59
60
61
// JavaScript Document

var xmlHttp;

function GetXmlHttpObject(handler)
{
    var objXmlHttp = null;
    
    if(navigator.userAgent.indexOf("Opera") >= 0)
    {
        alert ("Opera is not supported i guess... use FF");
        return;
    }
    
    if(navigator.userAgent.indexOf("MSIE") >= 0)
    {
        var strName = "Msxml2.XMLHTTP"
        
        if(navigator.appVersion.indexOf("MSIE 5.5") >= 0)
        {
            strName = "Microsoft.XMLHTTP";
        }

        try
        {
            objXmlHttp = new ActiveXObject(strName)
            objXmlHttp.onreadystatechange = handler;
            return objXmlHttp;
        }
        
        catch(e)
        {
            alert("Error. Scripting for ActiveX might be disabled");
            return;
        }

    }

    if(navigator.userAgent.indexOf("Mozilla") >= 0)
    {
        objXmlHttp = new XMLHttpRequest();
        objXmlHttp.onload = handler;
        objXmlHttp.onerror = handler;
        return objXmlHttp;
    }
}

var xmlhttp = false;

/*@cc_on @*/
/*@if (@_jscript_version >= 5)
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
@end @*/


Ben blij dat dit nu werkt, maar wat doet dat laatste stukje code precies?
Gewijzigd op 01/01/1970 01:00:00 door Cedric
 
Joren de Wit

Joren de Wit

21/01/2008 20:02:00
Quote Anchor link
Tip: download de firebug addon voor firefox en kijk eens welke foutmeldingen gegeven worden.
 
Jan Koehoorn

Jan Koehoorn

21/01/2008 20:35:00
Quote Anchor link
Je code om een generiek XMLHTTP object te maken gaat uit van browserstrings en is dus onbetrouwbaar. Zoiets is al beter:
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
        try
        {
            // Firefox, Opera 8.0+, Safari
            xmlHttp=new XMLHttpRequest ();
        }
        catch (e)
        {
            // Internet Explorer
            try
            {
            xmlHttp=new ActiveXObject ("Msxml2.XMLHTTP");
            }
            catch (e)
            {
                try
                {
                xmlHttp=new ActiveXObject ("Microsoft.XMLHTTP");
                }
                catch (e)
                {
                alert ("Your browser does not support AJAX!");
                return false;
                }
            }
        }

Nog handiger is om een library als Mootools te gebruiken. Die neemt je al dit soort werk uit handen.
 
Martijn B

Martijn B

21/01/2008 21:01:00
Quote Anchor link
Zet in het begin van het js bestand dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
if( !window.XMLHttpRequest )
{
    XMLHttpRequest = function()
    {
        try    { return new ActiveXObject('MSXML2.XMLHTTP.6.0'); } catch (e){}
        try    { return new ActiveXObject('MSXML2.XMLHTTP.3.0'); } catch (e){}
        try    { return new ActiveXObject('Microsoft.XMLHTTP'); } catch (e){}
        return undefined;
    }
}


En je kunt daarna gewoon met XMLHttpRequest werken.
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 



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.