Включить плагины jQuery с .getScript ()? - PullRequest
0 голосов
/ 10 августа 2011

Я пытаюсь загрузить шаблонный плагин jQuery с помощью jQuery.getScript, но, несмотря на то, что он выполняет запрос и файл поступает правильно (заменил URL тестовым JS, а javascript действительно оценивается правильно), jQuery.tmpl по-прежнему не определен, но если я запускаю jQuery.tmpl в консоли Chrome, это функция.

Пример кода:

<script type="text/javascript">    
jQuery.getScript('http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js');
console.log(jQuery.tmpl); // returns undefined.
</script>

Есть идеи, что это за проблема?

Ответы [ 7 ]

3 голосов
/ 10 августа 2011

Вам следует дождаться загрузки скрипта.

jQuery.getScript('http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js',
    function(){
        console.log(jQuery.tmpl);
    }
);
2 голосов
/ 10 августа 2011

Подождите, пока он загрузится.Попробуйте использовать:

jQuery.getScript('http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js', function() {
    console.log(jQuery.tmpl);
});

или, чтобы сделать его более читабельным, попробуйте использовать:

$.ajax({
    url: "http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js",
    dataType: "script",
    success: function() {
        console.log(jQuery.tmpl);   
    }
});
0 голосов
/ 24 марта 2014

Синхронизация или асинхронный метод расширения для $ .getScript: https://github.com/hudsonfoo/jquery-getscripts

0 голосов
/ 04 сентября 2013

В итоге я просто синхронизировал вызов .ajax, чтобы использовать его как часть моего логического потока:

jQuery.ajax({
    url: script,
    async: false,
    dataType: "script",
    success: function() {
        console.log("Loaded "+script);   
    },
    complete: function() {
        console.log("Failed to load "+script);   
    }
});
0 голосов
/ 10 августа 2011

Вам нужно обернуть это в обратном вызове, поскольку следующий оператор выполняется немедленно, тогда как загрузка скрипта может занять некоторое время.:

jQuery.getScript('http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js', function() {
   console.log(jQuery.tmpl);
});
0 голосов
/ 10 августа 2011

Ваша проблема в том, что скрипт загружается асинхронно, а это значит, что вам нужно дождаться его завершения, прежде чем вы сможете его использовать.

http://api.jquery.com/jQuery.getScript/

Решение заключается в следующем:

$.getScript('.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js', function (data, textStatus) {
    //Use the script now
});

Я бы порекомендовал просто добавить ссылку на скрипт на странице, если он вам понадобится немедленно.

0 голосов
/ 10 августа 2011

Вы должны использовать его в методе обратного вызова (обработчик успеха) getScript

jQuery.getScript('http://ajax.microsoft.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js',
function(){
   console.log(jQuery.tmpl);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...