2016-03-08 7 views
0

Я использую этот ответ, ever popular SO post динамически загружать файл JavaScript:файл Javascript не загружается динамически

$.getScript("scripts/datagrid.js", function(){ 

    alert("Script loaded but not necessarily executed.");      

}); 

Но это никогда не загружает. JQuery ссылается в базовом HTML-файле в заголовке до файла js, который вызывает эту функцию загрузки скрипта. Кроме того, я не называю этот скрипт загрузчика, пока после загрузки документа:

$(document).ready(function() { 
    administration.init(); 
}); 



var administration = { 
    ... 


    init : function() { 

     try { 

      $.getScript("scripts/datagrid.js", function(){ 
       alert("Script loaded but not necessarily executed."); 

      }); 


     } catch (e) { 
     alert('[administration.init] error = ' + e); 
     } 


    ... 

Я подтверждено, что JQuery загружен уже путем проверки значения элемента, который жестко закодированы в HTML с помощью JQuery. Это также подтверждается фактом выполнения сценария.

Файл сценария существует и работает, если я добавляю его в заголовок HTML, но хочу его динамически загружать.

Почему анонимная функция никогда не срабатывает (очевидно, потому что сценарий никогда не загружается - почему)?

EDIT

Следуя совету Санджая ниже, я связан обработчик ошибок для вызова Ajax и консоль теперь показывает следующее:

TypeError: Cannot read property 'init' of undefined(…) 

Так это найти файл, просто, видимо, не в состоянии для поиска функции init класса.

+0

У вас возникли какие-либо ошибки в вашей консоли JavaScript? Вы видите запрос, сделанный для файла js? (возможно, он возвращает 404 или что-то, или неправильный тип mime). – Halcyon

+0

Проверьте свою консоль на наличие других ошибок? – mehulmpt

+0

Ошибок в консоли. –

ответ

1

вы должны попытаться загрузить script как

$.getScript("ajax/test.js") 
    .done(function(script, textStatus) { 
    console.log(textStatus); 
    }) 
    .fail(function(jqxhr, settings, exception) { 
    console.log(exception); // here you can get reason why file is not loading 
}); 

вы можете увидеть консольный ошибку Not Found здесь jsfiddl

+0

Спасибо. Но я хочу знать, почему этот чрезвычайно популярный пост и ответ не работают. –

+0

@AndroidAddict Потому что вы делаете что-то неправильно. Вы должны отлаживать его, мы ничего не можем вам помочь –

+0

@AndroidAddict, что вы получаете? Может быть '$ .getScript()' не получается корректным 'путь к скрипту' –

1

Изменение кода с использованием последовательности, как это: (удалить Try/скрыть и использовать обработчик событий для отладки это) назовите его ПОСЛЕ того, как вы его объявите.

if(!jQuery){alert("No jQuery loaded")} 
var administration = { 
    init : function() { 
    $.getScript("scripts/datagrid.js") 
    .done(function(script, textStatus) { 
     console.log(textStatus); 
    }) 
    .fail(function(jqxhr, settings, exception) { 
     alert("exception:"+ exception); 
    }); 
    } 
}; 
$(document).ready(function() { 
    administration.init(); 
}); 
Смежные вопросы