PHP and JQuery передача значения из цикла в JS

1. fhgdfhdfhdf (16.07.2012 / 21:19)
zag.php
<?php
require_once('db.php');

function getraz($row){
            echo '<div id="srazdel">';
            echo '<a href="index.php?act=pcat&amp;id='. $row[0] .'">'. $row[1] .'</a>' ;
            echo ' ';
            echo '<input type="hidden" name="del" id="del" value="'. $row[0] .'" /><a class="del"  href="#del='.$row[0].'" title="Удалить"><font color="red">Удалить</font></a>';
            echo '</div>';
        
};

echo('<div id="zagol"><h1>Админ. панель - Создание разделов</h1></div><br />');

$result = mysql_query('SELECT * FROM cat');

echo('fghfgh'.$_GET['#del'].'');

include_once ('./inc/delraz.inc');

 while ($row = mysql_fetch_array($result))
        {
           getraz($row) ;
         }
             



?>

delraz.inc
<script type="text/javascript">
    $(document).ready(function(){
        $(".del").click(function(){
            var del = $("#del").val();
            $.ajax({
                type: "POST",url: "save.php",
                data: ({del : del}),
                beforesend: alert("Отправляемые данные: del = " + del ),
                success: function(data){$("#raz").load("raz.php");;}
            }); 
        });
        
    });
</script>  

Проблемка в следующем, данные всегда отправляются первые из цикла, то есть если вывелась страница:

Первый раздел Удалить (id раздела 20)
Второй раздел Удалить (id раздела 24)
Третий раздел Удалить (id раздела 29)

Везде где нажимаешь удалить выводиться: Отправляемые данные: del =20.

Кто может подсказать как это исправить, и как вообще можно передать в JS (JQuery) переменные из цикла.

2. Артур (16.07.2012 / 21:26)
Ответ перехватывай success: function(data){$("#
raz").load("raz.php");} аргумент будет ответом сервера

3. fhgdfhdfhdf (16.07.2012 / 21:39)
Мы наверное друг друга не так поняли, он постоянно отправляет на save.php
del=20 какой бы из разделов я не хотел удалить, всегда берет только значение первого, раз уж он отправил на сервер это значение ту сервер думаю его и получил)

4. Артур (16.07.2012 / 21:48)
var del = $("#del").val();
замени на
var del = $(this).val();

5. fhgdfhdfhdf (16.07.2012 / 21:52)
да кстати, глупый совсем вопрос, я года три назад изучал JS JQuery и год был в армии, поэтому позабыл многое, this что значит?

Добавлено через 02:52 сек.
При использовании этого this полученные данные становятся такими del= и на этом все, то есть в JS не чего не передается...

6. Александр (16.07.2012 / 21:59)
id должен быть уникальным.

7. Артур (16.07.2012 / 22:00)
<?php
require_once('db.php');

function getraz($row){
echo '<div id="srazdel">';
echo '<a href="index.php?act=pcat&amp;id='. $row[0] .'">'. $row[1] .'</a>' ;
echo ' ';
<a class="del" href="" idDel="'.$row[0].'" title="Удалить"><font color="red">Удалить</font></a>';
echo '</div>';

};

echo('<div id="zagol"><h1>Админ. панель - Создание разделов</h1></div><br />');

$result = mysql_query('SELECT * FROM cat');

echo('fghfgh'.$_GET['#del'].'');

include_once ('./inc/delraz.inc');

while ($row = mysql_fetch_array($result))
{
getraz($row) ;
}




?>

<script type="text/javascript">
$(document).ready(function(){
$(".del").click(function(){
var del = $(this).attr('idDel');
$.ajax({
type: "POST",url: "save.php",
data: ({del : del}),
beforesend: alert("Отправляемые данные: del = " + del ),
success: function(data){$("#raz").load("raz.php");;}
});
});

});
</script>

попробуй

8. fhgdfhdfhdf (16.07.2012 / 22:16)
О, большое спасибо =) помогло)

9. Артур (16.07.2012 / 22:21)
У тебя код кривоват кстати

10. fhgdfhdfhdf (16.07.2012 / 22:24)
В чем именно?) Я просто недавно начал чисто свое писать) это мой первый проект)

11. Артур (16.07.2012 / 22:44)
В разметке

12. fhgdfhdfhdf (16.07.2012 / 22:48)
Например? просто это все тоже инклудится на другую страницу, которая имеет шаблон применимый ко всем другим главным страницам) как то так)

13. ramzes (16.07.2012 / 22:49)
<a class="del"  href="#" name="'.$row[0].'" title="Удалить">
______
<script type="text/javascript"> 
    $(document).ready(function(){ 
        $(".del").click(function(){ 
            var delID = $(this).attr('name'); 
            $.ajax({ 
                type: "POST",url: "save.php", 
                data: ({del : delID}), 
                beforesend: alert("Отправляемые данные: del = " + delID ), 
                success: function(data){$("#raz").load("raz.php");;} 
            });  
        }); 
         
    }); 
</script>  


14. fhgdfhdfhdf (16.07.2012 / 22:56)
13. ramzes, Спасибо) так действительно лучше =)

15. ramzes (16.07.2012 / 22:57)
я только не понял, зачем вот это вот?
success: function(data){$("#raz").load("raz.php");;}


16. fhgdfhdfhdf (16.07.2012 / 22:57)
Еще вопросик, как очистить форму при помощи JQuery?

17. ramzes (16.07.2012 / 22:59)
$('#form').reset();
По моему

18. fhgdfhdfhdf (16.07.2012 / 23:00)
15. ramzes, обновляет список разделов, без обновления страницы, только в варианте Башки она все равно обновлялась, а в твоем все ок)

19. ramzes (16.07.2012 / 23:04)
18. 6680, зачем так хардкорно?
Просто скрывайте удаленную строку
$('this').css({display: 'none'});
Или я что то не уловил?

Добавлено через 04:24 сек.
из своего кода выдрал, для примера
    function dropPost(id, type){
         var dp = confirm('Точно сненсти эту хрень?');
        if(dp==true){
            if(type=='comment'){
                var ps = 'comment';
                var url = 'dropcomments';
            }else if(type=='private'){
                var ps = 'priv';
                var url = 'dropprivate';
            }else if(type=='wall'){
                var ps = 'wall';
                var url = 'dropwall';
            }
         $.ajax({
                url: '/ajax/'+url+'/'+id+'/',
                cache: false,
                success: function(html){
                    if(html=='0'){
                        $('#'+ps+'_'+id).css({ display: 'none'}); // убираем удаленный блок
                        alert('Снесено к чертям собачим!');
                    }else{
                        alert('А вот хрен, че то незаладилось!');
                    }
                }
            });
        }
    }


20. fhgdfhdfhdf (16.07.2012 / 23:12)
19. ramzes, даже не знаю) понял то вроде все так) но вот в моем случае не оч работает) да и что тут хардкорного?) + 10 кило трафика))) и всего то))) просто в добавлении разделов тот же копия скрипт, только другое передает) и там то явно обновлять нужно эту часть стр)

21. Артур (16.07.2012 / 23:16)
$('#'+ps+'_'+id).css({ display: 'none'});
Нехорошая практика, лучше hide()

Добавлено через 00:23 сек.
А еще лучше вообще удалить

22. fhgdfhdfhdf (16.07.2012 / 23:20)
не) с этим методом тут тоже заморочки из за цикла получаются) снова выборку из цикла делать)

23. Артур (16.07.2012 / 23:22)
Хардкорный аякс )

24. fhgdfhdfhdf (16.07.2012 / 23:26)
да))))))))))))))

25. ramzes (17.07.2012 / 00:10)
20. 6680, хардкорно то что ты по новой запрашиваешь все разлелы(пых)
Передаешь большой обьем данных (трафик и память)
И заставляешь арбуз перерисовывать целый блок ради одного элемента в нем (проц и время)

Добавлено через 01:14 сек.
21. Башка, чем нехорошая? То же самое же.
А удалять нельзя, возможен возврат отображения (в моем случае)

Добавлено через 09:45 сек.
6680 (16 Июля 2012 / 23:20)
не) с этим методом тут тоже заморочки из за цикла получаются) снова выборку из цикла делать)
какой еще цикл?%)

26. Артур (17.07.2012 / 08:59)
25. ramzes, я не о твоем варианте )

27. fhgdfhdfhdf (17.07.2012 / 21:28)
25. ramzes, лан, посмотрим) позже возможно сделаю менее хардкорно) я пока что экспериментирую)

URL: https://visavi.net/topics/33252