[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: разрешить скрипты в loadHTML
ange-linka
как разрешить использование скриптов на страничке, загружаемой при помощи loadHTML???

помогите пожалуйста!
я загружаю страничку при помощи loadHTML
примерно так:
<a ONFOCUS='this.blur()' ><span onclick="loadHTML('11111.php', 'content')">турум-пурум</span></a>

мне это надо чтобы получалось что-то типа ajax-меню

но проблема в том, что весь java-script код, который должен выполняться на подгружаемой страничке 11111.php, перестаёт выполняться:(((

какие надо передать параметры, или может какую-то другую, схожую функцию использовать, чтобы ява-скрипт код всё-таки выполнялся?
заранее спасибо!



Спустя 2 минуты, 18 секунд (27.08.2009 - 13:27) ange-linka написал(а):
о, кстати о функции loadHTML
я её взяла где-то на просторах инета, она вот такая:

<script type="text/javascript">
var request;
var dest;

function processStateChange(){
if (request.readyState == 4){
contentDiv = document.getElementById(dest);
if (request.status == 200){
response = request.responseText;
contentDiv.innerHTML = response;
} else {
contentDiv.innerHTML = "Error: Status "+request.status;
}
}
}


function loadHTML(URL, destination){
dest = destination;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
request.onreadystatechange = processStateChange;
request.open("GET", URL, true);
request.send(null);
}
}
</script>

Спустя 4 часа, 8 минут, 18 секунд (27.08.2009 - 17:35) Michael написал(а):
Цитата
подгружаемой страничке 11111.php, перестаёт выполняться:(((

То есть сначала выполняется, а потом нет?
Измени:
Код
if(window.XMLHttpRequest){
if (!request) {
   request = new XMLHttpRequest();
}
request.onreadystatechange = processStateChange;
//...

Пробуй.

Спустя 13 часов, 48 минут, 51 секунда (28.08.2009 - 07:24) ange-linka написал(а):
//То есть сначала выполняется, а потом нет?

то есть если просто открывать страничку 11111.php, то на ней все скрипты работают. а если подгружать её через loadHTML, то скрипты не работают.

Спустя 1 час, 13 минут, 23 секунды (28.08.2009 - 08:38) twin написал(а):
Цитата
я её взяла где-то на просторах инета, она вот такая:

А на просторах нашего форума можно найти более другой вариант, который не только выполняет скрипты, но еще готовит и стирает)))

Спустя 34 минуты, 27 секунд (28.08.2009 - 09:12) Michael написал(а):
twin зачем девушку грузишь?
У меня ange-linka твой код работает - выводит меню. (но не в IE6).
Вылаживаю файлы - посмотри что у тебя не так. Как создать верно
объект XMLHttpRequest смотри у меня в закоментированной части скриптов:
var xmlhttp = getXmlHttp();
Основной файл:
Свернутый текст

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Работа с AJAX и XML</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<?php
header('Content-Type: text/html; charset=utf-8');
?>

<script language="javascript" type="text/javascript">
////////// МОЙ КОД BEGIN
/*
var xmlhttp = getXmlHttp();

function getXmlHttp(){
var xmlhttp;
try {

xmlhttp = new XMLHttpRequest();
} catch (e) {
try {//alert('IE6');
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp){
alert('Не могу создать XMLHttpRequest');
}
return xmlhttp;
}


/////////////////////////////
function func1()
{

var dat1=document.form1.text1.value;
dat1=encodeURIComponent(dat1);
var query="name="+dat1;
xmlhttp.open('POST', 'http://localhost/ajax_otv0.php', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
xmlhttp.onreadystatechange=Refresh;
//alert(query);
xmlhttp.send(query);
}

function Refresh()
{
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
//alert(getAllResponseHeaders());
//alert(xmlhttp.responseText); // - OK
resp=xmlhttp.responseXML;
respdoc=resp.documentElement;
x=respdoc.getElementsByTagName('el');
x1=x[0];
x2=x[1];
xt1=x1.firstChild.data;
xt2=x2.firstChild.data;
//alert(hello);
document.getElementById('divv1').innerHTML=xt1+'<br>'+xt2;
//document.getElementById('divv1').innerHTML=xmlhttp.responseText; -OK
} else {alert('ошибка')}
} else {
document.getElementById('divv1').innerHTML='Идет работа...';
}
}

function readfromxml()
{
if (xmlhttp){
xmlhttp.open('POST', 'http://localhost/other/ajax/serverotvet/xml1.xml', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
xmlhttp.onreadystatechange=RefreshXML1;
//alert(query);
xmlhttp.send(null);
}
}
//////////
function RefreshXML1()
{
if (xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
document.getElementById('divv1').innerHTML='';
try {
xmlResponse=xmlhttp.responseXML;

} catch (e) {
alert('Ошибка ответа сервера');return;
}
if (xmlResponse && xmlResponse.documentElement) {
//alert('ok');return;

xmlRoot=xmlResponse.documentElement;
var node=xmlRoot.nodeName;

if (node=="parsererror") {
alert("Ошибка структуры документа2");
return;
}
/////////////////////////////
//// КОД ОБРАБОТКИ
//alert('Работаем');

titlearr=xmlRoot.getElementsByTagName('title');
icbnarr=xmlRoot.getElementsByTagName('isbn');
var html='<b>TITLE:</b><br>';
for (var i=0;i<titlearr.length;i++)
{
html+=titlearr.item(i).firstChild.data+'<br>';
}
html+='<b>ISBN:</b><br>';
for (var i=0;i<icbnarr.length;i++)
{
html+=icbnarr[i].firstChild.data+'<br>';
}

document.getElementById('divv1').innerHTML=html;
} else {alert("Ошибка структуры документа1")}
} else {alert('ошибка status!=200')}
} else {
document.getElementById('divv1').innerHTML='Идет работа...';
}
}
*/
////////// МОЙ КОД END

////////// ТВОЙ КОД BEGIN
var request;
var dest;

function processStateChange(){
if (request.readyState == 4){
contentDiv = document.getElementById(dest);
if (request.status == 200){
response = request.responseText;
contentDiv.innerHTML = response;
} else {
contentDiv.innerHTML = "Error: Status "+request.status;
}
}
}


function loadHTML(URL, destination){
dest = destination;
if(window.XMLHttpRequest){
request = new XMLHttpRequest();
request.onreadystatechange = processStateChange;
request.open("GET", URL, true);
request.send(null);
}
}
////////// ТВОЙ КОД END
</script>
<body>
<form name="form1" method="post" action="">
<input type="button" name="But1" value="Запрос" onClick="func1()">
<input type="text" name="text1">
<br>
<br>
<input type="button" name="But2" value="Чтение из xml" onClick="readfromxml()">
</form>
<br><br><a ONFOCUS='this.blur()' ><span onclick="loadHTML('http://localhost/ajax_otv0.php', 'divv1')">турум-пурум</span></a>
<hr>
<div id="divv1"></div>
</body>
</html>

Скрипт обработки:
Свернутый текст

<?php
header('Content-Type: text/xml; charset=utf-8');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
echo '<response>';

echo 'меню1<br>меню2<br>меню3';
echo '</response>';

?>

Спустя 1 день, 1 час, 10 минут, 8 секунд (29.08.2009 - 10:22) twin написал(а):
Цитата
twin зачем девушку грузишь?

Если внимательно посмотреть, то грузишь как раз ты. Потому что там готовый, опробованный класс, который можно добавить одной строчкой. А вот в твоем варианте разве будет
Цитата
чтобы ява-скрипт код всё-таки выполнялся?

Спустя 1 час, 10 минут, 52 секунды (29.08.2009 - 11:33) Michael написал(а):
Да она скрипт с инета скачала, и не знает скорее всего что такое класс - как создать объект, передать данные, получить, а там еще разбираться и разбираться. А я ее скрипт переделал - два движения мышкой и готово.
Цитата
чтобы ява-скрипт код всё-таки выполнялся?

У меня работает, почему у нее не будет?
PS
Хотя мне кажется она уже скачала другой скрипт с инета получше.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.