Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

JS, полученный через Ajax, не пашет. Почему?

14K
13 мая 2007 года
Snk
54 / / 22.03.2007
Может я тупой, ну хоть убей не могу понять почему не работает код:

 
Код:
<script language=JavaScript>
            document.write("<a href='#' &#111;&#110;click=alert('test')>test</a>");
</script>


полученный через Ajax... Замучил поисковики... Подскажите люди добрые, что, куда вписать)
7.9K
13 мая 2007 года
vasa_c
191 / / 05.04.2007
1. Аяксу наплевать на то что он получил. Для него это просто текст (или просто XML). Нужно принудительно выполнять через eval().
2. Теги <script> относятся к html, а не к JS, их быть не должно
3. Если это происходит после загрузки страницы document.write() просто убьет весь документ и начнет писать с чистой страницы.

Так же в следующий раз, желательно привести сам код получения через ajax.
12
13 мая 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Snk
Может я тупой, ну хоть убей не могу понять почему не работает код:

 
Код:
<script language=JavaScript>
            document.write("<a href='#' &#111;&#110;click=alert('test')>test</a>");
</script>


полученный через Ajax... Замучил поисковики... Подскажите люди добрые, что, куда вписать)


Пиши как это ты и что через аякс получаешь. Код в студию. Я вот через AJAX гоню с сервера на клиент HTML код вкупе с JS скриптами, динамически ставлю в текущий документ и у меня все работает...

14K
13 мая 2007 года
Snk
54 / / 22.03.2007
Собственно вот тут пример. В login.php
Код:
<?php
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");  
define('STR','Login');
include('inc.php');
$login = encr($_GET['login']);

   if (Authus($login,md5(md5($_GET['password'])))) {

      $_SESSION['login'] = $login;
      $_SESSION['password'] = md5(md5($_GET['password']));
      setcookie("login",$login,$time+2592000);
      setcookie("password",$_GET['password'],$time+2592000);

      echo = "<script language='javascript'>
                 var pro = \"profile.php?xml=1&sid="
.$id."\";
                 var out = \"logout.php?xml=1&sid="
.$id."\";
                 document.getElementById('lay40').innerHTML = \"
                 <div class='style3' style='position:absolute; left:560px; top:40px; height:17px; visibility:visible'>
                 <span style='cursor:pointer' &#111;&#110;click='npage(pro)'><b>"
.$login." </b></span> &nbsp &nbsp<span style='cursor:pointer' &#111;&#110;click='npage(out)'>Logout</span></div>\";
               </script>..."
;
   } else {

      ...

   }
?>
271
14 мая 2007 года
MrXaK
721 / / 31.12.2002
попробуй без тэгов и в js в обработке eval()
а нафига хранить в куках хэш пароля юзера?
14K
14 мая 2007 года
Snk
54 / / 22.03.2007
Цитата: Mr.Hacker

а нафига хранить в куках хэш пароля юзера?


Где ты видешь, что в куках храниться хэш?

14K
14 мая 2007 года
Snk
54 / / 22.03.2007
Цитата: alekciy
HTML код вкупе с JS скриптами, динамически ставлю в текущий документ и у меня все работает...


Вот, что мне надо!) Можно по подробней, как это ты делаешь? Единственная мысль, которая приходит в голову, это перебирать responseText. Если встречаем "<script language='javascript'>", все в eval(), пока не встретим "</script>". Остальное вставляем в див. Достаточно жестко)) Может есть более простой способ?

271
14 мая 2007 года
MrXaK
721 / / 31.12.2002
ну лана, в сессии хэш, а в куках обычный пасс... имхо не очень хорошее решение...
14K
14 мая 2007 года
Snk
54 / / 22.03.2007
Цитата: Mr.Hacker
ну лана, в сессии хэш, а в куках обычный пасс... имхо не очень хорошее решение...


Почему?

12
14 мая 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Snk
Собственно вот тут пример. В login.php


Ну собственно под AJAX я хотел бы увидеть JS код приложения. Клиентскую часть.

12
14 мая 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Snk
Вот, что мне надо!) Можно по подробней, как это ты делаешь?


Ну собственно общия принципы я изложил вот тут: http://www.ixbt.com/soft/ajax.shtml

12
14 мая 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Mr.Hacker
ну лана, в сессии хэш, а в куках обычный пасс... имхо не очень хорошее решение...


От перехвата ни спасет ни то ни другое... Максимум от чего спасут хэши так это от изменение данных профиля юзера. Спастись можно только либо через HTTPS, либо заставляя юзера логиниться в каждую сессию, а в хэш писать ник, пас, IP и еще может паре данных с клиента. Но таким обычно заморачиваются только для критических данных, для форумов и прочего обычно мозг не парят :D

14K
14 мая 2007 года
Snk
54 / / 22.03.2007
Цитата: alekciy
Ну собственно под AJAX я хотел бы увидеть JS код приложения. Клиентскую часть.


А в исходном коде страницы не видно? Весь JS там почти только из этого и состоит.

12
14 мая 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Snk
А в исходном коде страницы не видно? Весь JS там почти только из этого и состоит.



:D видно. Просто уже привычка рассматривать только то, что пишется в тебе. По сабжу.

 
Код:
document.getElementById(p).innerHTML = req.responseText;

Это не совсем верно. Тебе бы стоило ознакомиться с DOM спецификацией. Лучше создать новые элемент, назначить в него полученый код с сервера, добавить элемент в дерево документа. Должно быть что-то в духе:
 
Код:
function addElement() {
    //ответ сервера в виде обычного текста
    var docTEXT = requestObj.responseText;
    //создаем элемент div
    var div = document.createElement('div');
    //добавляем ответ сервера в div
    div.innerHTML = docTEXT;
    //добавляем div с ответом сервера в дерево документа, т.е. в DOM
    document.form.appendChild(div);
};
14K
14 мая 2007 года
Snk
54 / / 22.03.2007
И тогда JS с тегами <script> будет работать? Или? Почему не совсем правильно? Какая разница вставлять в отчищенный див или в созданный?
12
14 мая 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Snk
И тогда JS с тегами <script> будет работать?


Попробуй, узнаешь ;) Один из вариантов решения я указал. Экспериментируй.

12
14 мая 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Snk
Какая разница вставлять в отчищенный див или в созданный?



Ну у тебя твой код работает?....

А разница есть. Очищеный уже находиться в DOM и не факт, что браузер переназначит его содержимое как разметку, а не тект. А содержимое вновь добавляемого перед добавлением в дерево документа будет браузером парситься из текста в DOM. И потом я указал одно из возможных решений, можешь придумать свое.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог