За последние 24 часа нас посетили 22132 программиста и 1685 роботов. Сейчас ищут 1409 программистов ...

Не исполняется js из скрипта запускаемого аяксом

Тема в разделе "JavaScript и AJAX", создана пользователем Mr.M.I.T., 9 апр 2008.

  1. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Например если у меня в скрипте запускаемом аяксом есть строчка
    PHP:
    1.  
    2. print "
    3.         <script language=\"JavaScript\">
    4.          alert(\"Ваш голос засчитан. Рейтинг - $resr\");
    5.         </script>
    6.          ";
    То почему когда я вывожу результат работы скрипта responseText'ом то ява скрипт не исполняется
    И как сделать чтоб исполнялся?
     
  2. creage

    creage Активный пользователь

    С нами с:
    12 мар 2008
    Сообщения:
    131
    Симпатии:
    0
    Адрес:
    Киев
    эээ... сперва почитать про аякс, json, xml и rpc - перестанете задавать такие вопросы.

    по делу - возвращайте аяксом не код, а просто переменную, а в клаент-сайде проверяйте ее наличие в ответе. если есть переменная - тут же алертнули юзеру вашу месагу. ну или как там вам надо.
     
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Так и есть. Eval на крайний случай. А лучше найти выход, чтобы не подгружать активный js аяксом.
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Да я сначало так и хотел,но всётаки мне кажется что держать js в работающем скрипте как-то правельнее ИМХО
     
  5. creage

    creage Активный пользователь

    С нами с:
    12 мар 2008
    Сообщения:
    131
    Симпатии:
    0
    Адрес:
    Киев
    тогда советую почитать про API - что это, как реализовано.

    коротко - передаются только данные - в вашем случае на сервере их подготовили, на клиенте приняли и обработали - все.
     
  6. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Код (Text):
    1.  document.getElementById(****).innerHTML=eval(ajax.responseText);
    Остановился пока на eval'е
    не работает =(
    в пхп:
    PHP:
    1.  print "
    2.          document.write('*******');
    3.           alert(\"Ваш голос засчитан. Рейтинг - $resr\");
    4.          ";
    сорь конечно =) я в js новичёк =(
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Mr.M.I.T.

    ты передавай два массива.
    ajax.responseText
    и
    ajax.responseJS

    и вот этот JS и MyEval();

    [js]
    var MyEval = function ( js ) {

    if(js != '') {
    if ( window.execScript )
    window.execScript( js );
    else
    // eval.call( js);
    window.setTimeout( js, 0);
    }
    }
    [/js]
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Mr.M.I.T.

    есть еще один красивый вариант как гугл делает. могу только завтра выслать.
     
  9. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Mr.M.I.T.

    какая либа? чья?
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    эээ =)
    Либа? тоесть? ajax сам писал =))
    А вот пример работы аякса
    http://mit-home.nov.ru/35/
    Но должно ещё алертоваться что голос засчитан и показать текущий рейтинг..
    Чесно не понял затеи =(
    тоесть делать вывод из 2 массивов? нет не то...
    или ajax.responseJS пойдёт как js? хм..щас попробую...
    Только сначало давай с этим =)
    А то нето не сё выйдет...

    вот и весь аякс =))
    [js]function ajaxsendget(url,elm,evl) {
    var ajax=ajaxconn();
    ajax.onreadystatechange = function() {
    document.getElementById('ajaxload').style.visibility='visible';
    if (ajax.readyState==4) {
    document.getElementById('ajaxload').style.visibility='hidden';
    if (!evl) {
    document.getElementById(elm).innerHTML=ajax.responseText;
    }else {
    document.getElementById(elm).innerHTML=eval(ajax.responseText);
    }
    }
    };
    ajax.open("GET",url, false);
    ajax.send(null);
    }
    function ajaxsendpost(url,param,elm,evl) {
    var ajax=ajaxconn();
    ajax.onreadystatechange = function() {
    document.getElementById('ajaxload').style.visibility='visible';
    if (ajax.readyState==4) {
    document.getElementById('ajaxload').style.visibility='hidden';
    if (!evl) {
    document.getElementById(elm).innerHTML=ajax.responseText;
    }else {
    document.getElementById(elm).innerHTML=eval(ajax.responseText);
    }
    }
    };
    ajax.open("POST",url, false);
    ajax.setRequestHeader("Content-Type",

    "application/x-www-form-urlencoded");
    ajax.send(param);
    }
    function ajaxconn() {
    var req;
    if (window.XMLHttpRequest)
    {
    req = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
    try {
    req = new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e){}
    try {
    req = new ActiveXObject('Microsoft.XMLHTTP');
    } catch (e){}
    }
    return req;
    }
    [/js]
     
  11. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Оффтоп.
    Как-то не уживаются вместе твой ник и идеи о дебильном кулхацкерстве.
     
  12. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ээ ты о чём?
    какой таком хакерстве =) :twisted:
     
  13. sword dancer

    sword dancer Активный пользователь

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
  14. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    /me почесал затылок...
    Интересно с чего это вы взяли что я называюсь в честь Массачусетсского технологического института =)))
    Ищите в нэте что-то типа
    Методика Mr.M.I.T. - подсчёт карт в БлэкДжек

    Зы А по теме есть идеи? =) пока 440hz не пришёл ;)
     
  15. creage

    creage Активный пользователь

    С нами с:
    12 мар 2008
    Сообщения:
    131
    Симпатии:
    0
    Адрес:
    Киев
    я всетаки не понимаю, почему вы уперлись в передачу именно скрипта, а не данных? ведь с данными проще, и ваш скрипт давно бы уже работал!
     
  16. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    потому что я стремлюсь к универсальности =)
    А если будут передоваться данные то придётся для каждого скрипта писать свой запрос...
    ии тем более ведь работает пхп скрипт, так пусть он и разговаривает 0_о

    или может я вас не так понимаю =(?
     
  17. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Я вышел из положения так - при выводе полученной инфы проверяю контент. Если есть ява-вывожу.
     
  18. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    блин...выяснилось что в Лисе не работает Аякс =(
    Почему так? =((((
     
  19. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Mr.M.I.T.
    Используйте готовые решения. Если prototype или jquery кажутся Вам громоздкими, то советую посмотреть JsHttpRequest
     
  20. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    эмм 1 =)
    как проверяете
    2. как выводите
    а если там не только js но и html..eval наверно работать не будет..хотя у меня он и так не работает =(