PDA

View Full Version : JS Script runs correctly in FF 3.5, not in IE 8



halcyon.systems
October 23rd, 2009, 06:43 PM
Hello all,
I wrote the following script, but am unsure as to reasons it will not work in IE8.


<script type="text/javascript">
function GetXmlHttpObject() {
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
alert("Your browser does not support XMLHTTP!");
}
return xmlhttp;
} // end of FUNCTION


function loadContent(listingNum) {
var URLString = new String();
var dataString = new String();
var ajaxObject = GetXmlHttpObject();

if (listingNum == 0) {
URLString = "http://development.ctcba.org/index.php?option=com_content&id=63&format=raw";
}
else {
URLString = "http://development.ctcba.org/index.php?option=com_certification&format=raw&listingnum=" + listingNum;
}

ajaxObject.open("GET", URLString, true);

ajaxObject.send(null);

ajaxObject.onreadystatechange = function() {
if (ajaxObject.readyState != 4) {
document.getElementById('curr_cert_3').innerHTML = 'Loading...';
}
if (ajaxObject.readyState == 4) {

dataString = ajaxObject.responseText;

if (listingNum == 0) {
document.getElementById('edu_right').innerHTML = dataString;
}
else {
if (window.ActiveXObject) {
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

xmlDoc.async = false;
xmlDoc.loadXML(dataString);
root = xmlDoc.childNodes.item(1);
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument) {
var xmlDoc = (new DOMParser()).parseFromString(dataString, "text/xml");
var root = xmlDoc.childNodes.item(0);
}
else {
alert('Your browser cannot handle this script');
}

var node = root.getElementsByTagName("listingText")[0];

if (window.ActiveXObject) {
var listingTextXML = root.childNodes.item(0).firstChild.data;
}
else if (document.implementation && document.implementation.createDocument) {
var listingTextXML = root.childNodes.item(1).firstChild.data;
}
document.getElementById('curr_cert_3').innerHTML = listingTextXML;
}
}
}

} // end of FUNCTION


Any help would be greatly appreciated.

NeoDreamer
October 25th, 2009, 03:47 AM
Hi,

You have a very strange way of JS programming. It's as though you were a C programmer in a past life, always allocating space before you use it.... You don't need to do all this var myString = new String() jazz. Just do var myString = "value".

And as for your issue at hand: you can drastically cut down on AJAX compatibility issues by using a framework such as Prototype. Look at how short this code is:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<script
src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"
type="text/javascript">
</script>
<script type="text/javascript">
//<![CDATA[
new Ajax.Request(
'serverScript.php', {
method: 'post',
parameters: {
someVariable: 123,
anotherVar: 456
}
}
);
//]]>
</script>
</head>
<body>
</body>
</html>


Consult here for more info:
http://www.prototypejs.org/learn/introduction-to-ajax