Ajax consente l’aggiornamento dinamico di una pagina web, ma se nel contenuto della response è presente del codice JavaScript questo non viene eseguito.
Come possiamo risolvere questo problema?

Cercando in rete ho trovato che la soluzione più semplice è quella di estrarre con una regular expression il codice all’interno del tag <script> e di passarlo alla funzione eval(). Vediamo in dettaglio un esempio utilizzando per la chiamata Ajax la libreria prototype:

var regex = /]*>([\s\S]*?)<\/script>/gm;

function DoAjax(url)
{
  new Ajax.Request(url,
      {
         method: 'get',
         onSuccess: updateAjaxArea,
         onFailure: showMessage
      });
}

function updateAjaxArea(transport)
{
  $('ajaxarea').innerHTML = transport.responseText;
  var str = transport.responseText; 
  var scripts = str.match(regex);
  eval(scripts[0].replace(/(<\s*\/?\s*)script(\s*([^>]*)?\s*>)/gi,''));
}

function showMessage(transport)
{
  alert('An error occurred during the AJAX request.');
}