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&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&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