• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 2632
  • Last Modified:

Extract javascript block from ajax content and execute it

HI,

I would like to extract a specific javascript block, which has an ID, from the content I received by making an ajax call and then execute that javascript block. Is it possible to do it using JQuery? Here's how I started out:
$(document).ready(function(){
           
   $.ajax({
            url: "Page2.aspx",
            type: "GET",
            success: function(content){
                    
                var scriptBlock = $(content).find('script#myscript');
                
                // Now execute the script block
            }
          });
});

Open in new window

0
wtor
Asked:
wtor
  • 3
  • 2
1 Solution
 
Shahzad Fateh AliWeb Solutions Architect & Technical Project Manager- VentureDive (Pvt) LtdCommented:
What is in your response, a javascript code or html?
If it is only javascript then put your code in a function and then after ajax call you will be able to call that function.

see the example

/* response */
<script>
function fnOne(){
 alert("Function one called");
}
function fnTwo(){
 alert("Function two called");
}
</script>
/* end response */
 
/* after ajax call */
 
success: function(content){
                    
        eval(content);      // make the script executable
        fnTwo();            // call to the function
            
         // Now execute the script block
   }

Open in new window

0
 
wtorAuthor Commented:
Sorry I forgot to mention that my response was the entire HTML of Page.aspx.
0
 
Shahzad Fateh AliWeb Solutions Architect & Technical Project Manager- VentureDive (Pvt) LtdCommented:
Can you place your response html here?
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
wtorAuthor Commented:
Here's the HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" action="Page.aspx">
 
        <script id="myscript" type="text/javascript">
            
            function demoClass()
            {
                var myval;
            }
            
            var obj = new demoClass();
            obj.myval = 10;
            
            alert( "This is a script in page 2. Value: " + obj.myval );
        </script>
 
    </form>
</body>
</html>

Open in new window

0
 
sh0eCommented:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script>
$(document).ready(function(){
   $.ajax({
            url: "Page2.aspx",
            type: "GET",
            cache: false,
            dataType: 'xml',
            success: function(xml){
                    
                eval($('script#myscript',xml).text())
            }
          });
});
</script>

Open in new window

0
 
wtorAuthor Commented:
Thanks sh0e for pointing me to the right direction. I just had to change the dataType to html and it worked!
I dont like using eval. If you google, you'll know why. Here's the final code:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script>
$(document).ready(function(){
   $.ajax({
            url: "Page2.aspx",
            type: "GET",
            cache: false,
            dataType: 'html',
            success: function(html){
                    
            var myScript = new Function($('script#myscript',html).text());
 
myScript();
            }
          });
});
</script>

Open in new window

0

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now