2014-01-06 3 views
-1

Это мой сайт (работа в процессе) ->Linkперезарядка источник Javascript после загрузки AJAX

Я использую это мой код, написанный на основе другого создателя. ->Link

Ajax код

$.ajax({ 
    type: 'GET', 
    url: href, 
    cache: true, 
}).done(function (data) { 
    ......   
// Run scripts 
    $data.filter('script').each(function(){ 
     var scriptTag = document.createElement('script'); 
     scriptTag.text = $(this).html(); 
     document.body.appendChild(scriptTag); 
    }); 
}); 

код позволяет загружать страницы через AJAX, то без обновления страницы. Проблема возникает, когда страница загружает javascript, они не учитываются, поэтому скрипт на загруженной странице не работает.

Если я могу (если он не отредактирован), я свяжу сайт, на котором я работаю, и попытаюсь щелкнуть по первому написанному EdoNetowork, а затем ссылку на учетную запись в теме, и вы увидите, что код игнорируется.

Как я могу исправить?

Я думаю, что проблема заключается в обновлении страницы javascript для загрузки. Но как я могу перезаряжать источники, загружаемые через javascript src?

+0

лучше всего поместить ваш код прямо здесь, в StackOverflow, в тегах кода, чтобы мы могли видеть только проблемную область, не проходя через весь ваш код. Кроме того, включите возвращаемое содержимое из вашего запроса ajax. – pedalpete

+0

Спасибо, в следующий раз я сделаю это. – Edoardo

ответ

2

Вы используете $ data.filter ('script'), который ничего не возвращает, вместо этого используйте find, а в вашей функции вы используете $(this).html(), но поскольку у скрипта нет html внутри него, поэтому он ничего вам не даст, вместо этого доступ attr('src') и добавить его в тег сценария

// your function 
$data.filter('script').each(function(){ 
    var scriptTag = document.createElement('script'); 
    scriptTag.text = $(this).html(); // use $(this).attr('src') 
    // scriptTag.attr('src', $(this).attr('src')) // use it like this 
    document.body.appendChild(scriptTag); 
}); 

вы также можете загрузить JavaScript в вашем done обратного вызова в Ajax вызова usinf jquery getScript()

$.ajax({ 
.. }).done(function() { 
$.getScript("ajax/test.js", function(data, textStatus, jqxhr) { ... }) 
}); 
Смежные вопросы