0

I am using an AJAX response to insert new Javascript into a page.

<div id="content">Content</div>
    <a href="javascript:void(0);" onclick="getPage(this);">Link</a>
    <script>
     function getPage(obj){
      request = new asyncRequest()
      request.open("POST", "testContent.php", true)
      request.setRequestHeader("Content-type",
      "application/x-www-form-urlencoded")
    
      request.onreadystatechange = function()
      {
       if (this.readyState == 4)
       {
         if (this.status == 200)
         {
           if (this.responseText != null)
           {
             document.getElementById('content').innerHTML =
               this.responseText
               scripts = document.getElementById('content').getElementsByTagName('script')
               for (var i = 0; i<scripts.length; i++){
                eval(scripts[i].innerHTML)
               }
           }
           else alert("Communication error: No data received")
         }
         else alert( "Communication error: " + this.statusText)
       }
      }
      params = 'page=' + obj.text
      request.send(params)
     }
          function asyncRequest()
          {
            try {var request = new XMLHttpRequest()}
            catch(e1){
          try{request = new ActiveXObject("Msxml2.XMLHTTP")}
          catch(e2){
              try{request = new ActiveXObject("Microsoft.XMLHTTP")}
              catch(e3){request = false}
           }
            }
            return request
          }
    </script>

The AJAX response is as follows:

<button onclick='buttonClick();'>Button</button>
<script>
    function buttonClick(){alert();}
    buttonClick(); //This works
</script>

I get an alert when the response is processed. But when I click the button, I get an error message.

testAjax.php:1 Uncaught ReferenceError: buttonClick is not defined
at HTMLButtonElement.onclick (testAjax.php:1)

The function works and definitely exists, but it can't be called by onclick.

0 Answers0