• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

скрыть Div аяксовый родом из пхп

  • Автор темы Kauperwood
  • Дата начала
K

Kauperwood

Добрый день друзья! первый мой пост тут, надеюсь что мне ответят, потому что на некоторых других форумах морозяться блин)
страдаю такой болезнью : у меня стоит jquery и весь контент содержиться в файле сallbacks.php, вот так :
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">callbacks.php</div></div><div class="sp-body"><div class="sp-content">
PHP:
<?php
switch($_GET['action']){
case '1':
?>
тут <div class="thisss"> контент контент </div>
<?	  
break;
if (isset($_GET['action']))
{
$to = $_GET['action'];
if (strpbrk($to, '.?/:*<>')) die('символы ., ?, /, :, *, <, > в запросе запрещены');
}
}
?>
И подключен lib.js приблизительно с таким содержанием:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">lib.js</div></div><div class="sp-body"><div class="sp-content">
Код:
$(document).ready(function(){
var loading = $("#loading");
var container = $("#ajax");
var link;
$("a.ajax-links").click(function(e){

e.preventDefault();
container.slideUp(75);
container.toggle(1500);
link = $(this).attr("href") + " #content";
container.load(link, hideLoading);
container.slideDown(75); 
});
$("a.ajax-close").click(function(){
container.slideUp(); 
});

});
В index.php все хоршо открываеться, очень приятно смотреть результат роботы. Задача положить ссылку "ajax-close" в callbacks.php. Это очень удобно и хотелось бы научиться. Пожалуйста обьясните что и как, почему не роботает через php, что нужно зделать(почитать), правильно ли это(может нет)?
 
K

Kauperwood

Не совсем понял, что вам надо..
Предположим если ссылка "ajax-close" будет находиться в основном файле index.php все будет роботать. Магические ссылки "ajax-links" располагаются среди контента в callbacks.php, стартовая инфа грузиться в основной div id="content" из секции default, в ней находяться "ajax-links" и "ajax-links2" ссылки на дополнительные блоки, кликая на них будет выползать новый div id="ajax" или div id="ajax2" с дополнительным контентом из callbacks.php, также кликая "ajax-close" он будет прятаться, тоесть все функционирует если "ajax-close", "ajax-links","ajax-links2" розмещены в основном блоке div id="content". Перестают ети ссылки роботать если их пытаться розместить и запустить из сгенерированых блоков div id="ajax", div id="ajax2".
Приведу полный пример:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">callbacks.php</div></div><div class="sp-body"><div class="sp-content">
PHP:
<?php

switch($_GET['action']){

case 'people_prise':
?>
<div class="green">
<h2>others people</h2>
<p> контент контент </p>
<a href="index.php?action=work" class="ajax-links2">// не работает (из дополнительно блока) необязательно делать, это для наглядности
<a class="ajax-close" >закрыть</a>// не работает (из дополнительно блока) 
</div>
<?
break;
case 'people_prise2':
?>
<div class="green">
<h2>others people</h2>
<p> контент контент </p>
<a href="index.php?action=work" class="ajax-links">// не работает (из дополнительно блока) необязательно делать, это для наглядности
<a class="ajax-close" >закрыть</a>// не работает (из дополнительно блока) 
</div>
<?
break;
default:
?>
<div class="green">
<h2>Добро пожаловать </h2> <p class="date">day</p>  <span class="clear"></span>
<a href="index.php?action=people_prise" class="ajax-links">посмотреть первый дополнительный блок</a>// работает , появляеться первое окно
<a href="index.php?action=people_prise2" class="ajax-links">посмотреть другой первый дополнительный блок</a>// работает , появляеться другое первое окно
<a href="index.php?action=soderjanie_sayta" class="ajax-links2">посмотреть второй дополнительный блок</a>// работает , появляеться второе окно над первым
</div>
<?
if (isset($_GET['action']))
{
$to = $_GET['action'];
if (strpbrk($to, '.?/:*<>')) die('символы ., ?, /, :, *, <, > в запросе запрещены');
}
}
?>

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">lib.js</div></div><div class="sp-body"><div class="sp-content">
Код:
$(document).ready(function(){

var container = $("#ajax");
var container2 = $("#ajax2");
var link;

$("a.ajax-links").click(function(e){

e.preventDefault();
container.slideUp(75);
container.toggle(1500);
link = $(this).attr("href") + " #content";
container.load(link, hideLoading);
container.slideDown(75); 
});

$("a.ajax-links2").click(function(e){

e.preventDefault();
container2.slideUp(75);
container2.toggle(1500);
link = $(this).attr("href")+ " #content";
container2.load(link, hideLoading);
container2.slideDown(75);	 
}); 

$("a.ajax-close").click(function(){

container.slideUp(500); 
});

$("a.ajax-close2").click(function(){

container2.slideUp(500);
});
});
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">index.php</div></div><div class="sp-body"><div class="sp-content">
Код:
<div id="top">
<a href="index.php?action=people_prise" class="ajax-links">посмотреть первый дополнительный блок</a><!--работает-->
<a class="ajax-close" >закрыть первый дополнительный блок</a><!--работает-->

<a href="index.php?action=soderjanie_sayta" class="ajax-links2">посмотреть второй дополнительный блок</a><!--работает-->
<a class="ajax-close2" >закрыть второй дополнительный блок</a><!--работает-->

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

<?php include("callbacks.php");?>		

</div>

Не понимаю почему так происходит.
 
V

vital

Вместо $().click()
используйте
$().live('click',function(){что_вам_там_надо();});
 
K

Kauperwood

Вместо $().click()
используйте
$().live('click',function(){что_вам_там_надо();});
Спасибо - попробовал.
Код:
$("a.ajax-close").live('click',function(){
container.slideUp(500); 
});
- неполучаеться, перестает закрываться даже в index.php
Также попробовал назначить .live на все клики - перестает роботать полностью (выводит каждый блок новой страничкой)
 
K

Kauperwood

Все правильно вы сказали, дело в том что версия 1.2.6 не поддерживала еще метод live(). Поставил 1.4.4, все начало отлично роботать. :lovecodeby:
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!