Как убить ajax

Статус
Закрыто для дальнейших ответов.

Doctor

Member
Регистрация
08.02.2012
Сообщения
20
На странице делаю ajax (post) запрос и результат вывожу в див

Код:
$.post("upt.php", {ps:1}, function(us){
$(".thediv").html(us);
});
На подгружаемой странице upt.php у меня запускается javascript таймер (каждые 5 секунд вылетает алерт).

Когда я удаляю див с этой страницей
Код:
$(".batonchik").live("click",function(){
$(".thediv").remove();
})
javascript продолжает выполнятся (алерт продолжает вылетать каждые 5 секунд). Если после удаления я отправлю ещё один ajax запрос, то запустится ещё один таймер.

Собственно, как отключить javascript код который выполняется на подгружаемой странице?
 

Doctor

Member
Регистрация
08.02.2012
Сообщения
20
а как он запущен? через setInterval() ?
да, но суть не в этом (сам таймер я могу остановить clearInterval'ом). Мне нужно при удалении дива отключить ВЕСЬ яваскрипт который был на той странице. У меня далее там будут обрабатываться клики и прочее и всё это мне нужно отключить.
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
все обрабатывается в глобальном неймспейсе страницы, советую изначально там завести переменную вроде enable_scripts = true; и проверять ее в подключаемых скриптах
 

Doctor

Member
Регистрация
08.02.2012
Сообщения
20
все обрабатывается в глобальном неймспейсе страницы, советую изначально там завести переменную вроде enable_scripts = true; и проверять ее в подключаемых скриптах
Немного не понял. Т.е. я делаю так: при запросе присваиваю глобольной переменной enable_scripts = true; Далее в подгружаемом файле я пишу что-то вроде
Код:
if(enable_scripts == true)
{
//выполняем тут все скрипты
}
А при удалении я пишу enable_scripts = false; Но это само собой не работает, так как при создании проверка вернет тру, а при удалении никакая проверка уже не происходит и алерт прыгает дальше.
Скорее всего я просто неправильно понял.

И ещё... Я тут подумал, может мне весь яваыскрипт на загружаемой странице поместить в функцию и както её удалять при удалении блока?
 

lekzd

parse error: parse error, unexpected T_STRING...
Регистрация
17.02.2011
Сообщения
1 125
Да что тут тяжелого?

Код:
тело страницы
<script>
var enable_scripts = true;
</script>
<div>
сюда ajax подгружает
<script>
function ajax_do(){
if (!enable_scripts) return false;
//bla bla bla
}
ajax_do();
</script>
</div>
 

Doctor

Member
Регистрация
08.02.2012
Сообщения
20
Да что тут тяжелого?

Код:
тело страницы
<script>
var enable_scripts = true;
</script>
<div>
сюда ajax подгружает
<script>
function ajax_do(){
if (!enable_scripts) return false;
//bla bla bla
}
ajax_do();
</script>
</div>

Так я вобщем и сделал. Не работает. При создании проверка возвращает тру, и скрипт начинает выполнятся, а при удалении проверка не происходит (проверка идет только при загрузке страницы).
 

Doctor

Member
Регистрация
08.02.2012
Сообщения
20
вот код главной
Код:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<style>
.thediv{
width:100px;
height:100px;
overflow:auto;
border:1px solid #CCC;}
</style>
<script type="text/javascript">
$(document).ready(function(){
var enable_scripts = true;
$.post("upt.php", {vd:1}, function(us){
  $(".thediv").html(us);
});
$("input").live("click",function(){
  $(".thediv").remove();
});
});
</script>
<title>Главная</title>
</head>
<body>
<div class='thediv'></div>
<input name="q" type="button" value="Удалить">
</body>
</html>
Вот код upt.php
Код:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
$(document).ready(function(){
function srtp(){alert("5");}
if(!enable_scripts){return false;}
function ajax_do(){
setInterval(srtp,5000);
}
ajax_do();
});
</script>
<title>upt</title>
</head>
<body>
sssssssssssssssssssssssssssssssss
</body>
</html>
Алерт не появляется совсем. Где ошибся?
 

Volter9

defined('SURRENDER') or die(); // StarWars
Регистрация
27.05.2012
Сообщения
1 145
У Jq у аякса есть метод .abort(): http://stackoverflow.com/questions/446594/abort-ajax-requests-using-jquery
 

Doctor

Member
Регистрация
08.02.2012
Сообщения
20
Попробовал, алерт всё равно продолжает выпрыгивать.
вот код:
Код:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<style>
.thediv{
width:100px;
height:100px;
overflow:auto;
border:1px solid #CCC;}
</style>
<script type="text/javascript">
$(document).ready(function(){
var xhr = $.ajax({
    type: "POST",
    url: "upt.php",
    data: "vp=1",
    success: function(us){
	   $(".thediv").html(us);
}
});
$("input").live("click",function(){
  xhr.abort();
  $(".thediv").remove();
});
});
</script>
<title>Главная</title>
</head>
<body>
<div class='thediv'></div>
<input name="q" type="button" value="Удалить">
</body>
</html>
И upt.php:
Код:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
$(document).ready(function(){
function srtp(){alert("5");}
setInterval(srtp,5000);
});
</script>
<title>upt</title>
</head>
<body>
sssssssssssssssssssssssssssssssss
</body>
</html>
 

Volter9

defined('SURRENDER') or die(); // StarWars
Регистрация
27.05.2012
Сообщения
1 145
А кто будет делать clearInterval()?
 

Doctor

Member
Регистрация
08.02.2012
Сообщения
20
А кто будет делать clearInterval()?
Так, я и хочу сделать так чтобы не приходилось убивать все таймеры и события в отдельности, а прихлопнуть весь код сразу. У меня например там не таймер а обработчик клика, который должен сробатывать только пока я не удалил блок с аяксом
index.php
Код:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<style>
.thediv{
width:100px;
height:100px;
overflow:auto;
border:1px solid #CCC;}
</style>
<script type="text/javascript">
$(document).ready(function(){
var xhr = $.ajax({
    type: "POST",
    url: "upt.php",
    data: "vp=1",
    success: function(us){
	   $(".thediv").html(us);
}
});
$(".dc").live("click",function(){
  xhr.abort();
  $(".thediv").remove();
});
});
</script>
<title>Главная</title>
</head>
<body>
<div class='thediv'></div>
<input name="asas" type="button" value="alert" class='pr'>
<input name="q" type="button" value="Удалить" class='dc'>
</body>
</html>
upt.php
Код:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
$(document).ready(function(){
$(".pr").live("click",function(){
alert("sss")})
});
</script>
<title>upt</title>
</head>
<body>
sssssssssssssssssssssssssssssssss
</body>
</html>
Я нажимаю на кнопку "алерт" и выпрыгивает алерт. Затем нажимаю на кнопку "Удалить" - блок удаляется. Затем снова жму на "алерт" и снова выскакивает алерт. Вот я и хочу сделать так чтобы после того как я нажал на кнопку "Удалить" ЛЮБОЙ javascript код из файла upt.php полностью игнорировался (алерт не выпрыгивал).
 
Статус
Закрыто для дальнейших ответов.
Верх Низ