2016-04-26 2 views
2

У меня есть запрос ajax POST, этот запрос поставляется с html с тегами <script src="">, ссылающимися на внешние js-файлы, когда я вставляю этот html в DOM, JS не загружается, что я «Неправильно? Я могу помнить, что эта работа по загрузке внешнего скрипта1 и скрипта2 без проблем.jQuery не загружает js-файл в тег скрипта ajax-запроса

Запрос:

$.ajax({ 
    type: 'POST', 
    dataType: 'xml/html', 
    cache: false, 
    url: "/html/with/scripttags", 
    data: {somedata:'value'}, 
    success: function(data) { 
     $('body').append(data) 
    } 
    }); 

Содержимое загружено:

<link rel="stylesheet" media="all" href="http://domain.com/application.css" /> 
<script src='http://domain.com/script.js' type='text/javascript'></script> 
<script src='http://domain.com/script2.js' type='text/javascript'></script> 
<script type='text/javascript'>alert('executed')</script> 
<div>BLAALBLABLAB</div> 

Однако предупреждение в сценарий тега выполняется без проблем и application.css внешний файл загружается без проблем. Похоже, что jQuery не загружает файлы, я также проверяю вкладку в сети.

+0

Это мое предположение, но, возможно, DATATYPE должен быть «сценарий». Кроме того, этот метод jQuery был бы полезен, если бы я правильно понял проблему - https://api.jquery.com/jquery.getscript/. Кроме того, посмотрите на аналогичный вопрос http://stackoverflow.com/questions/950087/include-a-javascript-file-in-another-javascript-file. –

+0

нет, это нормальное поведение – n00dl3

+0

@KarolisRamanauskas вы неправильно поняли - в разделе «Содержимое загружено» в вопросе отображается код HTML, который загружает OP. Он не хочет загружать только определенный скрипт; он хочет загрузить HTML, который содержит теги '

0

Самый простой подход должен был бы удалить

<script src='http://domain.com/script.js' type='text/javascript'></script> 
<script src='http://domain.com/script2.js' type='text/javascript'></script> 

из "/html/with/scripttags", а затем вызвать

$.when($.getScript('http://domain.com/script.js') 
     , $.getScript('http://domain.com/script2.js')) 
.fail(function(jqxhr, textStatus, errorThrown) { 
    console.log(textStatus, errorThrown) 
}) 

на $.ajax()success.

Смотрите также $.ajax() на dataType

нескольких, разделенных пробелами значений: С JQuery 1.5, JQuery может преобразовать тип данных от того, что он получил в Content-Type заголовка к тому, что вам требуется. Например, если вы хотите, чтобы текстовый ответ обрабатывался как XML, используйте «text xml» для dataType. Вы также можете сделать запрос JSONP , получили ли он текст и интерпретировали jQuery как XML: «jsonp text xml». Аналогично, строчная строка, такая как «jsonp xml» , сначала попытается преобразовать из jsonp в xml, и, в противном случае, конвертировать из jsonp в текст, а затем из текста в xml.

"xml/html" не является допустимым типом MIME или ожидаемый параметр для dataType

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