2013-10-12 5 views
0

Я хочу загрузить форму AJAX на свою страницу с ее собственным validation.js прилагается к ней. Как я могу это сделать?Как получить файл JavaScript после загрузки страницы?

Я попытался загрузить каждый свой запрос $.ajax, а затем вывести HTML на страницу успешно, но validation.js не работает в форме.

Могу ли я загрузить файл JavaScript, а затем HTML-файл (с ajax) на моей существующей странице, а затем получить вывод HTML на странице для ответа на эти функции JavaScript?

+0

Можете ли вы показать нам, что вы получили до сих пор – Charlie74

+0

Может быть eval - это то, что вы запираете за плохое, что считается опасной и плохой практикой. http://www.w3schools.com/jsref/jsref_eval.asp – pethel

+0

Возможный дубликат [асинхронного загрузки/выполнения javascript] (http://stackoverflow.com/questions/4631845/asynchronous-javascript-loading-executing) – Kaarel

ответ

3

используйте следующий javascript для добавления файла javascript в async режиме после загрузки страницы.

(function() { 
    var d=document, 
    h=d.getElementsByTagName('head')[0], 
    s=d.createElement('script'); 
    s.type='text/javascript'; 
    s.async=true; 
    s.src='/js/myfile.js'; 
    h.appendChild(s); 
}()); 

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

function asyncLoader(scriptName) 
{ 
    var d=document, 
    h=d.getElementsByTagName('head')[0], 
    s=d.createElement('script'); 
    s.type='text/javascript'; 
    s.async=true; 
    s.src = scriptName; 
    h.appendChild(s); 
} 

Этот метод не гарантирует/не уведомляет о загрузке js-файла. для этого вы можете поместить какой-либо вызов в загружаемый файл.

Если вы загружаете какой-либо html из ajax и добавляете его в свой текущий html (как innerHtml), вы можете поместить тег <script> внутри этого html и он будет вести себя так же, как и код выше.

см. Это question и его ответы для более подробной информации.

EDIT:

Ниже приведен способ JQuery с использованием $.getScript

$.getScript("path/my_script.js", function(){ 
    console.log("Load was performed."); 
}); //JQuery can also be used instead of $ 

делает то же самое, используя $.ajax

$.ajax({ 
    url: "path/my_script.js", 
    dataType: "script", 
    success: function(){ 
    console.log("Load was performed."); 
    } 
}); 
+1

любой комментарий, почему его downvoted? – Mohit

+0

Я новичок в javaScript. И я не понимаю половину кода, который вы написали. есть ли способ jQuery написать? –

+0

Я отредактировал ответ с решением JQuery – Mohit

Смежные вопросы