Предоставить любой ответ от вызова ajax (HTML и / или JS) - PullRequest
1 голос
/ 11 мая 2011

Интересно, какой самый эффективный способ сделать НИЧЕГО, что может прийти из вызова ajax. Ответ может быть html и / или javascript

Я делал это с document.write (), так как вызов ajax был синхронизирован. Теперь я должен использовать асинхронные вызовы, поэтому я не могу просто написать на страницу с помощью document.write, я должен добавить содержимое к определенному html-объекту, когда вызов завершен.

Я пробовал это

   $jQuery.ajax({
   url: "myURL.ashx",
   data: params,
   success: function(data){
        var newdiv = document.createElement('div');
        newdiv.innerHTML = data;
        document.getElementById('target').appendChild(newdiv);
   }   

но он не работает для любого возвращенного JavaScript, его легко сломать (это означает; он не отображает содержимое или делает странные вещи, как отображение содержимого в новой вкладке). Я просто работаю по простым сценариям.

Интересно, есть ли лучший подход, который работает лучше, чем этот?

Спасибо!

EDIT

Этот код, например, не работает должным образом. Он отображает содержимое на пустой странице вместо добавления содержимого на текущую страницу. Я тестирую с FF 3.6. Для простоты я пишу javscript на str var, но этот скрипт возвращается с сервера. Контент, возвращаемый сервером, является ADS, контент динамический и абсолютно случайный.

        var str = "<sc" + "ript language=\"JavaScript\" type=\"text/javascript\">";
        str += "document.write('<scr'+ 'ipt language=\"JavaScript\" src=\"anything.js\" type=\"text/javascript\"><\/scr' + 'ipt>');";
        str += "<\/script>";
        var newdiv = document.createElement('div');
        newdiv.innerHTML = str;
        document.getElementById('target').appendChild(newdiv);    

Ответы [ 2 ]

1 голос
/ 11 мая 2011

Хорошо, jQuery-эквивалент того, что у вас есть:

success: function(data){
    $('<div />')
        .append(data)
        .appendTo('#target');
}

Вам придется объяснить, что вы подразумеваете под

не работает ни для какого javascript вернулся

для лучшего ответа.

Если в * 1013 есть какие-либо теги <script>, jQuery оценит их в глобальной области видимости, если вы используете функцию jQuery.append, как я продемонстрировал выше.

Обновление

Просто удалите оператор document.write. Используйте document.write только когда страница еще загружается.

<script src="anything.js" type="text/javascript"></script>
0 голосов
/ 11 мая 2011

есть лучшие способы включить файлы js, чем сделать ajax-вызов, который загружает javascript.Я бы посмотрел на .getScript ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...