Web Analytics Made Easy -
StatCounter AJAX and DOM, Literal HTML Displayed - CodingForum

Announcement

Collapse
No announcement yet.

AJAX and DOM, Literal HTML Displayed

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • AJAX and DOM, Literal HTML Displayed

    In the following code my efforts loading content1-4 via AJAX, into a dynamically created container, has the HTML snippets returning literally,(can see the HTML elements) and the dynamic element is not cleared, the next snippet is simply added to the tree.

    Using innerHTML works fine, but not the exercise. I'm confident someone has done this and has a solution at this forum.

    I've googled and only found references to this anomaly happening with jQuery.



    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Sample 2_1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript">
    	<!--
    	
    	//Create a boolean variable to check for a valid Internet Explorer instance.
    	var xmlhttp = false;
    	
    	//Check if we are using IE.
    	try {
    		//If the Javascript version is greater than 5.
    		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    		alert ("You are using Microsoft Internet Explorer.");
    	} catch (e) {
    		//If not, then use the older active x object.
    		try {
    			//If we are using Internet Explorer.
    			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    			alert ("You are using Microsoft Internet Explorder");
    		} catch (E) {
    			//Else we must be using a non-IE browser.
    			xmlhttp = false;
    		}
    	}
    	
    	//If we are using a non-IE browser, create a javascript instance of the object.
    	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    		xmlhttp = new XMLHttpRequest();
    		alert ("You are not using Microsoft Internet Explorer");
    	}
    	
    	function makerequest(serverPage, objID) {
    	var obj = document.getElementById(objID);
    	xmlhttp.open("GET", serverPage);
    	xmlhttp.onreadystatechange = function() {
    	if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    createDisplayElement(objID);
    	
    
    
    	  }
    	  }
    	xmlhttp.send(null);
    	}
    	
    	function createDisplayElement(objID){
    	    var obj = document.getElementById(objID);
    	    var para = document.createElement("p");
    	    obj.appendChild(para);
    	    var txtNode = document.createTextNode(xmlhttp.responseText);
    	    para.appendChild(txtNode);
    
    	}
    	
    	//-->
    </script>
    
    <body onload="makerequest ('content1.html','hw')">
    	<div align="center">
    		<h1>My Webpage</h1>
    		<a href="content1.html" onclick="makerequest('content1.html','hw'); return false;">Page 1</a> | <a href="content2.html" onclick="makerequest('content2.html','hw'); return false;">Page 2</a> | <a href="content3.html" onclick="makerequest('content3.html','hw'); return false;">Page 3</a> | <a href="content4.html" onclick="makerequest('content4.html','hw'); return false;">Page 4</a>
    
    	</div>		
    	<div id="hw"></div>
    	
    </body>
    </html>


    --------------Using innerHTML------------------

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Sample 2_1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script type="text/javascript">
    	<!--
    	
    	//Create a boolean variable to check for a valid Internet Explorer instance.
    	var xmlhttp = false;
    	
    	//Check if we are using IE.
    	try {
    		//If the Javascript version is greater than 5.
    		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    		alert ("You are using Microsoft Internet Explorer.");
    	} catch (e) {
    		//If not, then use the older active x object.
    		try {
    			//If we are using Internet Explorer.
    			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    			alert ("You are using Microsoft Internet Explorder");
    		} catch (E) {
    			//Else we must be using a non-IE browser.
    			xmlhttp = false;
    		}
    	}
    	
    	//If we are using a non-IE browser, create a javascript instance of the object.
    	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
    		xmlhttp = new XMLHttpRequest();
    		alert ("You are not using Microsoft Internet Explorer");
    	}
    	
    	function makerequest(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);
    	}
    	/**
    	function createDisplayElement(objID){
    	    var obj = document.getElementById(objID);
    	    var para = document.createElement("p");
    	    obj.appendChild(para);
    	    var txtNode = document.createTextNode(xmlhttp.responseText);
    	    para.appendChild(txtNode);
    
    	}/
    	**
    	
    	
    	//-->
    </script>
    <body onload="makerequest ('content1.html','hw')">
    	<div align="center">
    		<h1>My Webpage</h1>
    		<a href="content1.html" onclick="makerequest('content1.html','hw'); return false;">Page 1</a> | <a href="content2.html" onclick="makerequest('content2.html','hw'); return false;">Page 2</a> | <a href="content3.html" onclick="makerequest('content3.html','hw'); return false;">Page 3</a> | <a href="content4.html" onclick="makerequest('content4.html','hw'); return false;">Page 4</a>
    		<div id="hw"></div>
    	</div>
    </body>
    </html>

  • #2
    wasbi said ....
    "In the following code my efforts loading content1-4 via AJAX, into a dynamically created container, has the HTML snippets returning literally,(can see the HTML elements) and the dynamic element is not cleared, the next snippet is simply added to the tree. "

    Yes, this is correct.That's exactly what a createTextNode should do.
    It should convert HTML to text just as you describe.

    Yes, it adds to the tree without clearing because that's
    exactly what appendChild should do.

    Comment


    • #3
      Thanks,

      I've researched the methods for clarity. So given the desired goal innerHTML is the only choice.

      If others would you share a solution inline with creating a dynamic element and populating with the AJAX return.

      I'm giving this a try: https://developer.mozilla.org/en/DOM...rtAdjacentHTML
      Last edited by wasabi; Aug 29, 2011, 10:25 AM. Reason: Update for Clarity

      Comment

      Working...
      X
      😀
      🥰
      🤢
      😎
      😡
      👍
      👎