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 что значит?
При использовании этого
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'});
Или я что то не уловил?
из своего кода выдрал, для примера
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()
А еще лучше вообще удалить
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, хардкорно то что ты по новой запрашиваешь все разлелы(пых)
Передаешь большой обьем данных (трафик и память)
И заставляешь арбуз перерисовывать целый блок ради одного элемента в нем (проц и время)
21.
Башка, чем нехорошая? То же самое же.
А удалять нельзя, возможен возврат отображения (в моем случае)
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