Как выполнить javascript через ajax

программирование php JavaScript jQuery AJAX

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


var AjaxContent = function(){
var container_div = '';
var content_div = '';

return {
getContent : function(url){
$(container_div).animate({opacity:0}, //Прозрачность на 0
function(){ // загружает контент с помощью ajax
$('#gif_loader').show(); //показываем лоадер
$(container_div).load(url+" "+content_div, //загружает только выбранную часть
function(){
$(container_div).animate({opacity:1}); //возвращает прозрачность обратно на 1
$('#gif_loader').hide(); //скрываем лоадер при загрузке
}
);
});
},
ajaxify_links: function(elements){
$(elements).click(function(){
AjaxContent.getContent(this.href);
return false; //предотвращает нажатие на ссылку
});
},
init: function(params){ //задает первоначальные настройки
container_div = params.containerDiv;
content_div = params.contentDiv;
return this; //выводит объект
}
}
}();

$(function(){
AjaxContent.init({containerDiv:"#ajax-wrap",contentDiv:"#text"}).ajaxify_links("#ajaxgo a");
});


Примечание:
eval() ? Это как? Если можно, пожалуйста, поподробнее... Я не особо силен в java

Примечание:
Такой момент, что скрипт с контента использует document.write, поэтому со стороны его грузить не вариант, он должен выполнятся именно в контенте, где вставлен

Примечание:
NetRain (Alexander Borovikov), не получается сообразить, не могли бы вы показать на примере как это реализовать?

Примечание:
ВИДИМО РАЗОБРАТЬСЯ У НАС ТАК И НЕ ПОЛУЧИТСЯ...МОЖЕТ ХОТЯ БЫ ПОСОВЕТУЕТЕ ДРУГУЮ ДОКУМЕНТАЦИЮ ГДЕ ПОДРОБНО РАСПИСАНО, КАК РЕАЛИЗОВАТЬ НА САЙТЕ AJAX ПОДГРУЗКУ?

Примечание:
NetRain (Alexander Borovikov), подскажите пожалуйста, как ваш код внедрить в вишеописанный мой? у меня вообще перестает все работать...спасибо

Примечание:
не получилось....

Примечание:
думаю надо завязывать, все равно я сам ничего не напрограммирую...всем спасибо
Ответы:
какой на**й  eval()?
> Дополнение #1
Функция eval() предназначена для выполнения JS-кода, передаваемого в параметре (т. е. находящегося в строчной константе или переменной).
Ваша задача при получении ответа от сервера из переданного контента выдернуть JS-код и передать в eval(). Выдернуть можно к примеру регулярными выражениями.
И да, на любом другом языке решение было бы тем же с поправкой на синтаксис и библиотки функций, поэтому в ЯваСкрипте (который, кстати, с Явой не имеет ничего общего) для этого не надо много понимать. Это уже архиектура клиент-сервер и понятие "браузер".
я не понял? нахер консоль подставь див!!! или ума не хватает
вывести хоть на жопу можно а eval это зло почитай на досуге тут http://javascript.ru/eval
> HeX-1983 (hex hex)
Ну да. Как же удобно прочитать фразу "eval - зло" и даже не задуматься, а принять на веру, что всегда и везде eval - зло :-D
Только если это такое зло - нафига он в стандарт введен, вам такой вопрос в голову не приходил?
Зло - когда она работает с небезопасными данными. А обеспечить безопасность в должной степени бывает сложно.
Но есть целый класс задач, который требует eval'а, а альтернативным выходом может быть только запись кода куда-то с последующим подключением этого файла - не одно ли и то же (только медленнее), что и eval()?
Вы никогда не встречали задачи, где целесообразнее написать код, который будет генерировать другой узкоспециализированный код исходя из тех или иных условий и входных данных?
Пример:
пришел ответ "ляляля <script type="text/javascript">dosomething();</script> ляляля";
Допустим, он у нас в переменной response.
Тогда:
var pattern = /<script[^>]*>(.*)<\/script>/gim; // задали регулярное выражение (маску) для поиска
while ((myArray = pattern.exec(response)) != null)
{
/* myArray содержит совпадения по общей маске, а также по подмаскам (которые в маске находятся в скобках). Цикл нужен, чтобы последовательно пройти все совпадения с шаблоном */
eval(myArray[1]); // запускаем код, который нашли
}
> Дополнение #4
Не переживайте. Решение примерное я вам дал.
Возражения могут возникать у тех, кто прочитал по диагонали пару поверхностных статей и никогда с реальной разработкой не сталкивался (или не имеет достаточного опыта).
NetRain (Alexander Borovikov)
Функция, которая выполняется при получении ответа от сервера, получает параметр с текстом ответа. У вас он не указан (у вас простой function() { ... вместо function(response) {...)
Добавьте этой функции параметр (иначе как и откуда вы текст ответа-то пытаетесь считать?) и в эту функцию вставьте мой код.
Если не заведется - проверье имена переменных (чтобы мой код обращался за текстом ответа сервера в ту переменную, которую вы добавили в аргументы функции) + проверьте код на ошибки (синтаксические в первую очередь), потому что я его не отлаживал.
> HeX-1983 (hex hex)
Последние лет 8 занимаюсь, если не больше. И работаю, поверьте, не над сайтами-визитками уже давно и не в роли рядового кодера.
Вы понимаете разницу между элементом DOM и исполняемым кодом приложения/скрипта? Если да, то у вас не должно возникать сомнений в том, что вставка JS-кода в div или куда-либо еще не гарантирует его выполнения на всех платформах и браузерах, поскольку в этом случае всего лишь создается нода с неким содержанием (нода - это не код приложения, это структура с данными).
И давайте вести себя более цивилизованно и не кидаться совершенно неуместными оскорблениями.
Что именно не получилось? Какие ошибки выводит в консоль?


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.