Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 1 of 1
  1. #1
    New to the CF scene
    Join Date
    Apr 2011
    Posts
    1
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Javascript does not work upon AJAX call

    I have a page which does an AJAX call and loads an entire page. The page that gets loaded has some Javascript. The javascript works on page by itself when loaded, but when its gets loaded by AJAX, the Javascript does not work. I dont know what I am missing.

    The code of the loaded page is

    Code:
    <html>
    <script type="text/javascript">
    function showfield(name){
    if(name=='lstbox')document.getElementById('div1').style.display="block";
    else document.getElementById('div1').style.display="none";
    }
    
    function hidefield() {
    document.getElementById('div1').style.display='none';
    }
    
    </script>
    
    <head>
    </head>
    <body onload="hidefield()">
    <form action = "test2.php" method = "post">
    
    Please enter a name for the App <input type = "text" name = "name">
    
    <table border = "1"><tr><th>Choose a Label</th><th>Choose an element</th></tr>
    
    <tr><td><input type = "text" name = "label1" /></td> <td> 
    
    <select name = "elementtype1" id="elementtype1" onchange="showfield(this.options[this.selectedIndex].value)">
    
    <option value = 'select'> Select </option>
    
    <option value='txtbox'>Text Box</option>
    
    <option value='lstbox'>List Box</option>
    
    <option value='chkbox'>Check Box</option>
    
    <option value='radio'>Radio Button</option>
    
    </select></td><td><div id="div1">Enter Listbox options: <input type="text" name="whatever1" /></div></td></tr>
    
    </table>
    
    <input type = "submit" value = "Submit">
    
    </form>
    
    </body>
    
    </html>
    The code of the loading(AJAX) page is

    Code:
    <html>
    <head>
    </head>
    <body>
    
    <script src="ajax.js" type="text/javascript"></script>
    <script src="responseHTML.js" type="text/javascript"></script>
    
    <div id="storage" style="display:none;">
    </div>
    
    <div id="displayed">
    
    
    
    <FORM name="ajax" method="POST" action="">
    	<p>
    		
        <INPUT type="BUTTON" value="Get the Panel"  ONCLICK="loadWholePage('appcreator.php')">
    
    	</p>
    		
    </FORM>
    </div>
    
    
    
    </body>
    </html>

    responseHTMl.js file

    Code:
    function getBody(content) 
    {
       test = content.toLowerCase();    // to eliminate case sensitivity
       var x = test.indexOf("<body");
       if(x == -1) return "";
    
       x = test.indexOf(">", x);
       if(x == -1) return "";
    
       var y = test.lastIndexOf("</body>");
       if(y == -1) y = test.lastIndexOf("</html>");
       if(y == -1) y = content.length;    // If no HTML then just grab everything till end
    
       return content.slice(x + 1, y);   
    } 
    
    /**
    	Loads a HTML page
    	Put the content of the body tag into the current page.
    	Arguments:
    		url of the other HTML page to load
    		id of the tag that has to hold the content
    */		
    
    function loadHTML(url, fun, storage, param)
    {
    	var xhr = createXHR();
    	xhr.onreadystatechange=function()
    	{ 
    		if(xhr.readyState == 4)
    		{
    			//if(xhr.status == 200)
    			{
    				storage.innerHTML = getBody(xhr.responseText);
    				fun(storage, param);
    			}
    		} 
    	}; 
    
    	xhr.open("GET", url , true);
    	xhr.send(null); 
    
    } 
    
    	/**
    		Callback
    		Assign directly a tag
    	*/		
    
    
    	function processHTML(temp, target)
    	{
    		target.innerHTML = temp.innerHTML;
    	}
    
    	function loadWholePage(url)
    	{
    		var y = document.getElementById("storage");
    		var x = document.getElementById("displayed");
    		loadHTML(url, processHTML, x, y);
    	}	
    
    
    	/**
    		Create responseHTML
    		for acces by DOM's methods
    	*/	
    	
    	function processByDOM(responseHTML, target)
    	{
    		target.innerHTML = "Extracted by id:<br />";
    
    		// does not work with Chrome/Safari
    		//var message = responseHTML.getElementsByTagName("div").namedItem("two").innerHTML;
    		var message = responseHTML.getElementsByTagName("div").item(1).innerHTML;
    		
    		target.innerHTML += message;
    
    		target.innerHTML += "<br />Extracted by name:<br />";
    		
    		message = responseHTML.getElementsByTagName("form").item(0);
    		target.innerHTML += message.dyn.value;
    	}
    	
    	function accessByDOM(url)
    	{
    		//var responseHTML = document.createElement("body");	// Bad for opera
    		var responseHTML = document.getElementById("storage");
    		var y = document.getElementById("displayed");
    		loadHTML(url, processByDOM, responseHTML, y);
    	}
    ajax.js file

    Code:
    function createXHR() 
    {
        var request = false;
            try {
                request = new ActiveXObject('Msxml2.XMLHTTP');
            }
            catch (err2) {
                try {
                    request = new ActiveXObject('Microsoft.XMLHTTP');
                }
                catch (err3) {
    		try {
    			request = new XMLHttpRequest();
    		}
    		catch (err1) 
    		{
    			request = false;
    		}
                }
            }
        return request;
    }
    Last edited by raghujoshi; 04-11-2011 at 04:05 PM.


 

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •