Ajax werkt niet in Firefox
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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);
}
}
}
{
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
Code (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
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
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 @*/
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
firebug addon voor firefox en kijk eens welke foutmeldingen gegeven worden.
Tip: download de Code (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
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;
}
}
}
{
// 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.
Code (php)
1
2
3
4
5
6
7
8
9
10
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;
}
}
{
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