Асинхронный JavaScript не позволяет моей функции вернуться? - PullRequest
2 голосов
/ 26 мая 2011

Это может быть очень простой и начинающий вопрос, и я даже не уверен, что виноват асинхронный вызов. Но все равно ...

Я использую jQuery и его функцию для добавления внешних скриптов в файл .php. Во-первых, давайте посмотрим на мои внешние JS. (test.js):

function testFunc () {
  alert('It works!');
}

Тогда у меня есть .php файл с этим скриптом:

<script>
$.getScript('supervisor/cache/test.js');
$(document).ready(function() {
  testFunc();
});
</script>

При использовании этого метода testFunc(); не вызывается. Я попытался вставить return перед вызовом, поместить его вне функции ready, поместить $.getScript в функцию ready. Ну, я не знаю, что еще попробовать. Кроме того, если я вызову эту же функцию с помощью onClick в кнопке, она будет работать. Вот почему я думаю, что проблема может быть в асинхронном вызове из jQuery, который выполняет мою функцию до того, как скрипт действительно будет добавлен. Но кто знает? У кого-нибудь была такая же проблема раньше?

Ответы [ 2 ]

5 голосов
/ 26 мая 2011

Вы должны вызывать функцию после завершения выполнения сценария AJAX, что может произойти намного позже, чем событие готовности документа:

$.getScript('supervisor/cache/test.js', function() {
    testFunc();
});
2 голосов
/ 26 мая 2011

Поскольку вы извлекаете скрипт асинхронно, документ, вероятно, готов к загрузке test.js. Сделайте это вместо:

$.getScript('supervisor/cache/test.js', function(){
    testFunc();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...