Loading XML and Javascipt

JavaScript and client side scripting.

Moderator: General Moderators

Post Reply
telicasp
Forum Newbie
Posts: 2
Joined: Thu Jun 29, 2006 8:35 am

Loading XML and Javascipt

Post by telicasp »

feyd | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]


Hi all

                   I am facing an issue in mozilla browser in my web page, While Loading the XML file using javascript i cant able to get the contents of the XML file, It works fyn in IE but in mozilla i cant fetch the values of XML, I am getting undefined value. And the XML file is in .php extension.


Here is the method i am using

[syntax="javascript"]var xmlDoc;
function importXML(file) {
 var xmlDoc;
 var moz = (typeof document.implementation != 'undefined') && (typeof
document.implementation.createDocument != 'undefined');
 var ie = (typeof window.ActiveXObject != 'undefined');

 if (moz) {
   xmlDoc = document.implementation.createDocument("", "", null)
   xmlDoc.onload = readXML;
 } else if (ie) {
   xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
   xmlDoc.async = false;
   while(xmlDoc.readyState != 4) {};
 }
 xmlDoc.load(file);
}
Can any one help me to solve this issue.

Regards

Raja


feyd | Please use[/syntax]

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]
User avatar
kendall
Forum Regular
Posts: 852
Joined: Tue Jul 30, 2002 10:21 am
Location: Trinidad, West Indies
Contact:

Post by kendall »

feyd | Please use

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]


Raja,

I'm currently working on the exact same thing...except im having trouble with IE....
here somethning to use 
[syntax="javascript"]
/* this function loads an XSL stylesheet into an the appropriate XSLT processor object
   dependant on the browser */
function loadXslStylesheet(templatePath)
{/* load the XSL template */
	try {
		var oXmlDom = createDomFromUri(templatePath, true);
	} catch (e) {
		
		return false;
	}

	//if (! parseXmlDom(oXmlDom)) {
		// only contuine if the XSL style sheet is valid
	//	return false;
	//}

	if ((typeof XSLTProcessor) != "undefined") { // w3c Compliant browsers
		
		var oXslt = new XSLTProcessor();
		oXslt.importStylesheet(oXmlDom);
	
		return oXslt;		
	} else if (window.ActiveXObject) { // Internet Explorer
		var xslTemplate = new ActiveXObject("Msxml2.XSLTemplate.3.0");
		xslTemplate.stylesheet= oXmlDom;
		alert(xslTemplate);
		return xslTemplate.createProcessor();
	}
}

/* this function tranforms an XML document using an XSLT Processor object
   for w3c compliant browsers, a DOMDocument object is returned
   for Internet Explioer a valid string representation of the XML is returned
 */
function transformXml(oXmlDom, oXsltProcessor)
{
	if (window.ActiveXObject) { // Internet Explorer
		oXsltProcessor.input = oXmlDom;
		oXsltProcessor.transform();
		
		return oXsltProcessor.output;
	} else { // w3c compliant borwsers
		var xmlDoc = oXsltProcessor.transformToDocument(oXmlDom);
		var xmls = new XMLSerializer();
		return xmls.serializeToString(xmlDoc);
		
	}
}


function getXMLHTTP()
{
	if ((typeof XMLHttpRequest) != "undefined") {
		/* XMLHTTPRequest present, use that */
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		/*  there are several versions of IE's Active X control, use the most recent one available */
		var xmlVersions = ["MSXML2.XMLHttp.5.0",
				   "MSXML2.XMLHttp.4.0",
				   "MSXML2.XMLHttp.3.0",
				   "MSXML2.XMLHttp",
				   "Microsoft.XMLHTTP"];

		for (var x =0; x < xmlVersions.length; x++) {
			try {
				var xmlHTTP = new ActiveXObject(xmlVersions[x]);
				return xmlHTTP;
			} catch (e) {
				//continue looping
			}
		}
	}

	/* if none of that worked, return false, to indicate failure */
	return false;
}

/* checks a loaded XML document is valid */
function parseXmlDom(oXmlDom)
{
	if (window.ActiveXObject) { // Internet Explorer
		if (oXmlDom.parseError && oXmlDom.parseError.errorCode != 0) {
					alert(oXmlDom.parseError.reason);
			return false;
		} else {
			return true;
		}
	} else if (oXmlDom.documentElement) { // w3c Compliant Browsers
		if (oXmlDom.documentElement.tagName == 'parsererror') {
			return false;
		} else {
			return true;
		}		
	}

	throw 'Cannot Parse XML DOM';
}

/* creates a DOM Document from a URI containing valid XML
   - the freeThreaded argument is used by Internet Explorer to create a freeThreaded DOMDocument */
function createDomFromUri(uri, freeThreaded)
{
	var oXml = getDom(freeThreaded);
	oXml.async = false;

	oXml.load(uri);

	return oXml;
	
}



/* returns an instance of a DOMDocument object, dependant on the browser 
   - freeThreaded, if set to true will return a FreeThreadedDOMDocument in internet Explorer */
function getDom(freeThreaded)
{
	if (document.implementation.createDocument) {
		return document.implementation.createDocument('', '', null);
	} else if (window.ActiveXObject) {
		if (freeThreaded) {
			return new  ActiveXObject("MSXML2.FreeThreadedDOMDocument.3.0");
		}

			/* use the newest version of the MSXML2.DOMDocument available */
			var xmlVersions = ["MSXML2.DOMDocument.5.0",
					   "MSXML2.DOMDocument.4.0",
					   "MSXML2.DOMDocument.3.0",
					   "MSXML2.DOMDocument",
					   "Microsoft.XmlDom"];
			
			for (var x =0; x < xmlVersions.length; x++) {
				var oXml = '';
				if((oXml = new ActiveXObject(xmlVersions[x]))){
					return oXml;	
				} 
			}
			
		
	} 

	throw 'Cannot load XML';
}

function loadXmlFromString(sXml)
{
	var oXml = getDom();

	if (window.ActiveXObject) { // Internet Explorer
		oXml.loadXML(sXml);
		return oXml;	
	} else if ((typeof DOMParser) != "undefined") { // w3c Compliant Browsers
		var parser = new DOMParser();
		var ret = parser.parseFromString(sXml, 'text/xml');

		return ret;
	}

	throw 'Cannot load XMl from string';
	
}
function loadXMLData(url,outputDiv){
	xmlhttp = getXMLHTTP();
	 if (xmlhttp){
		xmlhttp.onreadystatechange = function(){
			if (xmlhttp.readyState==4){
			 if (xmlhttp.status==200){
					outPutXML(xmlhttp.responseText,outputDiv);
				}else{
					alert("Problem retrieving data:" + xmlhttp.statusText);
				}
			}
		}
		xmlhttp.open("GET",url,true);
		xmlhttp.send(null);
	}else{
		alert("Problem getting a connection");
	  }
}
I'm currently trying to figure out some errors but some stuff work in firefox


feyd | Please use[/syntax]

Code: Select all

,

Code: Select all

and [syntax="..."] tags where appropriate when posting code. Your post has been edited to reflect how we'd like it posted. Please read:  [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url] to learn how to do it too.[/color]
User avatar
panic!
Forum Regular
Posts: 516
Joined: Mon Jul 31, 2006 7:59 am
Location: Brighton, UK

Post by panic! »

i use this, works across FF,IE.

replace the line obj.innerHTML = xmlhttp.responseText;

with how you want to handle the document which is stored in: xmlhttp.responseText

Code: Select all

<script>

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 @*/

if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
xmlhttp = new XMLHttpRequest();
}

if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
xmlhttp2 = new XMLHttpRequest();
}

function getDoc(serverPage, objID) {

	var obj = document.getElementById(objID);
	xmlhttp.open("GET", serverPage);
	
	
	xmlhttp.onreadystatechange = function() {
	
	
	if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
		obj.innerHTML = xmlhttp.responseText;
	}
	
	}
	xmlhttp.send(null);
}
</script>
Post Reply