Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 02.11.2017, 12:54   #1
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 301
Репутация: 83
Смех [РЕШЕНО] Вывод в блок div с помощью JS

Доброго времени суток!

Не знаю правильно ли я выбрал тему но вопрос мой связан больше с JS.

Значится так есть у меня два блока div menu и content

Код:


<script language="JavaScript" type="text/javascript">
 
var req;
 
function processReqChange() {
    if (req.readyState == 4){      
        if (req.status == 200){
            document.getElementById('content').innerHTML=req.responseText;      
        };        
    };
};
 
function loadXMLDoc(url) {  
    if (window.XMLHttpRequest) {        
        req = new XMLHttpRequest();        
        req.onreadystatechange = processReqChange;        
        req.open("GET", url, true);        
        req.send(null);    
    } else if (window.ActiveXObject) {        
        req = new ActiveXObject("Microsoft.XMLHTTP");        
        if (req) {            
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);    
            req.send();         
        };   
    };
};
 
function getFile(url){
    loadXMLDoc(url);   
};    
 
</script>


<div id="menu">

<a href="javascript:void(0);" onclick="getFile('1.php')">1</a>
<a href="javascript:void(0);" onclick="getFile('2.php')">2</a>
<a href="javascript:void(0);" onclick="getFile('3.php')">3</a>

</div>
<div id="content">

Какое-то содержимое

</div>

Так вот когда я жму на ссылку в меню то содержимое страницы отображается в блоке div content

А вот собственно сама суть вопроса :

Если на какой то странице есть код который использует JavaScript

1.php
Код:


<script>
    alert("Test");
<script>

То этот скрипт не отрабатывает вообще не как ... Как можно сделать что бы JS заработал в моем случае???
__________________
"Я не волшебник, я только учусь"

Последний раз редактировалось s88s; 02.11.2017 в 19:11.
s88s вне форума   Ответить с цитированием
Старый 02.11.2017, 13:11   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,182
Репутация: 5256
По умолчанию

на StackOverflow про это пишут так
Код:

if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
    var myDiv = document.getElementById('divExample');
    myDiv.innerHTML = xmlhttp.responseText;

    var myScripts = myDiv.getElementsByTagName("script");
    if (myScripts.length > 0) {
        eval(myScripts[0].innerHTML);
    }
}
...

попробуйте.
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 02.11.2017, 14:14   #3
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 301
Репутация: 83
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
на StackOverflow про это пишут так
Код:

if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
    var myDiv = document.getElementById('divExample');
    myDiv.innerHTML = xmlhttp.responseText;

    var myScripts = myDiv.getElementsByTagName("script");
    if (myScripts.length > 0) {
        eval(myScripts[0].innerHTML);
    }
}
...

попробуйте.
Прошу прощения ... А куда этот скрипт нужно воткнуть? я просто с JS не очень дружу
__________________
"Я не волшебник, я только учусь"
s88s вне форума   Ответить с цитированием
Старый 02.11.2017, 14:46   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,182
Репутация: 5256
По умолчанию

Цитата:
Сообщение от s88s Посмотреть сообщение
Код:

function processReqChange() {
    if (req.readyState == 4){      
        if (req.status == 200){
            document.getElementById('content').innerHTML=req.responseText;      
        };        
    };
};


Код:

function processReqChange() {
  if(xmlhttp.readyState==4 && xmlhttp.status==200)
  {
            document.getElementById('content').innerHTML=req.responseText;      
            var myDiv = document.getElementById('content');
            myDiv.innerHTML = req.responseText;

            var myScripts = myDiv.getElementsByTagName("script");
            if (myScripts.length > 0) {
                        eval(myScripts[0].innerHTML);
            }
   };
};


p.s.
Цитата:
Сообщение от s88s Посмотреть сообщение
<script>
alert("Test");
<script>
завершающий тег должен быть
Код:

</script>

Serge_Bliznykov на форуме   Ответить с цитированием
Старый 02.11.2017, 16:01   #5
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 301
Репутация: 83
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
p.s.


завершающий тег должен быть
Код:

</script>

Да да это я тут опечатался просто сори ... просто в промежутки от работы тут писал =)

По поводу замены части кода ... я уже это делал так сказать пытался сделать методом тыка и не чего не работает
__________________
"Я не волшебник, я только учусь"

Последний раз редактировалось s88s; 02.11.2017 в 16:10.
s88s вне форума   Ответить с цитированием
Старый 02.11.2017, 16:30   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,182
Репутация: 5256
По умолчанию

Цитата:
Сообщение от s88s Посмотреть сообщение
я уже это делал так сказать пытался сделать методом тыка и не чего не работает
ну что я могу сказать?..
Отладка Вам в помощь.
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 02.11.2017, 16:41   #7
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,182
Репутация: 5256
По умолчанию

так. во-первых, попробуйте исправленный код (я забыл поменять имя переменной xmlhttp на ваше req)

Код:

function processReqChange() {
  if(req.readyState==4 && req.status==200)
  {
            document.getElementById('content').innerHTML=req.responseText;      
            var myDiv = document.getElementById('content');
            myDiv.innerHTML = req.responseText;

            var myScripts = myDiv.getElementsByTagName("script");
            if (myScripts.length > 0) {
                        eval(myScripts[0].innerHTML);
            }
   };
};

во-вторых, я запустил ваш код, положил на сервер файл 2.php такого вида:
PHP код:
<?php
?>
<script>
    alert("script from ajax (2.php)");
</script>
<?php

echo 'New Content';

?>
и у меня всё сработало.
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 02.11.2017, 16:46   #8
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 301
Репутация: 83
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну что я могу сказать?..
Отладка Вам в помощь.
Дело в том если что тот кусок кода который я заменил при нем ссылка нормально все отрабатывает то есть открывается в том блоке div в котором нужно ... а вот если я заменяю на Ваш то ссылка уже не открывается вообще. Что нет так

Код:


<script language="JavaScript" type="text/javascript">
 
var req;
 
function processReqChange() {
  if(xmlhttp.readyState==4 && xmlhttp.status==200)
  {
            document.getElementById('content').innerHTML=req.responseText;      
            var myDiv = document.getElementById('content');
            myDiv.innerHTML = req.responseText;

            var myScripts = myDiv.getElementsByTagName("script");
            if (myScripts.length > 0) {
                        eval(myScripts[0].innerHTML);
            };
   };
};
 
function loadXMLDoc(url) {  
    if (window.XMLHttpRequest) {        
        req = new XMLHttpRequest();        
        req.onreadystatechange = processReqChange;        
        req.open("GET", url, true);        
        req.send(null);    
    } else if (window.ActiveXObject) {        
        req = new ActiveXObject("Microsoft.XMLHTTP");        
        if (req) {            
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);    
            req.send();         
        };   
    };
};
 
function getFile(url){
    loadXMLDoc(url);   
};    
 
</script>

а вот ссылка сама

Код:


<a href="javascript:void(0);" onclick="getFile('1.php')">Страница 1</a>

__________________
"Я не волшебник, я только учусь"
s88s вне форума   Ответить с цитированием
Старый 02.11.2017, 16:49   #9
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,182
Репутация: 5256
По умолчанию

Цитата:
Сообщение от s88s Посмотреть сообщение
if(xmlhttp.readyState==4 && xmlhttp.status==200)
эту строчку надо исправить.
см. пост выше.
Serge_Bliznykov на форуме   Ответить с цитированием
Старый 02.11.2017, 16:59   #10
s88s
Форумчанин
 
Регистрация: 02.01.2014
Сообщений: 301
Репутация: 83
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
эту строчку надо исправить.
см. пост выше.
Уже исправил спасибо за помошь теперь сижу смотрю в чем проблема у меня не хочет работать =(

Ваш пример отрабатывается в полном объеме


Спасибо Вам за помощь !!!
__________________
"Я не волшебник, я только учусь"
s88s вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Решено]: Как прикрепить вложенный div к верху родительского элемента div? Женя32 HTML и CSS 2 29.09.2016 14:24
[РЕШЕНО]: плавающий блок Vzlom HTML и CSS 9 10.11.2015 13:13
[РЕШЕНО]: Смещение Div antonb770 HTML и CSS 3 27.04.2015 10:54
Прототипирование с помощью DIV naximuz HTML и CSS 1 15.10.2014 15:02
три столбца с помощью div wall66 HTML и CSS 7 17.12.2009 18:41


19:05.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru