Ajax является асинхронным.Ваш код пытается вызвать my_function()
до того, как XMLHttpRequest
завершится.Сделайте это вместо:
<script>
function load_ajax_content() {
//...load and throw the first file into 'div_ajax_content'
// then,
my_function();
}
load_ajax_content();
</script>
Хорошо, теперь ваш вызов ajax является синхронным.Вы можете анализировать возвращенный HTML для тегов <script>
и обрабатывать их отдельно, но это не очень красиво:
function load_ajax_content() {
//...load and throw the first file into 'div_ajax_content'
// then grab the script nodes one-by-one
var scriptElts = document.getElementById('div_ajax_content').getElementsByTagName('script'),
scriptElt,
propName; // http://www.quirksmode.org/dom/w3c_html.html#t07
if (scriptElts.length) {
propName = scriptElts[0].textContent ? 'textContent' : 'innerText';
}
for (var i=0; i<scriptElts.length; i++) {
scriptElt = document.createElement('script');
scriptElt[propName] = scriptElts[i][propName];
document.body.appendChild(scriptElt);
}
// finally,
my_function();
}
... или вы можете просто использовать библиотеку, такую как jQuery ,которая автоматически решает эту проблему (и многие другие!) для вас.