Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сохранение переменной для дальнейшего использования (https://javascript.ru/forum/misc/29458-sokhranenie-peremennojj-dlya-dalnejjshego-ispolzovaniya.html)

Eser 28.06.2012 14:58

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

php формирует список элементов при нажатии элемент нужно передать его id и вызвать форму div c Удалить? "ДА","НЕТ", при нажатии на "НЕТ" форму закрываем, при нажатии на "ДА"-> ajax запрос и удаляем элемент по id.

Проблема в том что у меня этот id теряется, т.е при выборе элемента из списка я его получаю, а при нажатии на кнопку "ДА", он исчезает и соответственно удалить я его не могу.
Вопрос как мне сохранить значение id для дальнейшего использования.
В php я бы сделал так.
if(id=число)
{
$_SESSION['id']=id;//ну а потом где угодно используй
}



Вот код:

PHP файл формирующий список:
Цикл
{
<td><input type='image'  onClick='delete_virtual_org(\"$row[id]\");' src='pic/16/delete_16.png'></td>
}


HTML:
<div id='delete_form'>
              <button onclick='delete_virtual_org(\"delete\")'>Да</button>
              <button onclick='delete_virtual_org(\"cancel\")' >Нет</button>
              </div>


javascript:

function delete_virtual_org(value)
{
var div = document.getElementById('delete_form');
if(div.style.display == 'none') 
{
div.style.display = 'block';
document.getElementById('opacity_background').style.opacity='0.5'
document.getElementById('opacity_background').style.zIndex='2000'
}

if(value=='cancel')
{
div.style.display = 'none';
document.getElementById('opacity_background').style.opacity='0'
document.getElementById('opacity_background').style.zIndex='-1000'
}

if(value=='delete')
{

   xhttp=new XMLHttpRequest();
   xhttp.onreadystatechange=function(){
      if (xhttp.readyState==4 && xhttp.status==200)
         
         div.style.display = 'none';
         document.getElementById('opacity_background').style.opacity='0'
         document.getElementById('opacity_background').style.zIndex='-1000'
        }
   xhttp.open('POST','php/workspace/admin_interface/virtual_organizations/ajax_delete_virtual_org.php',true);
   <!--Установим тип передаваемого содержимого как у форм-->
   xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
   xhttp.send('id='+value);

}
}

Проблема собственно с переменной value т.к в момент удаления она содержит значение "delete" а не id.
Объясните как это можно сделать.

Deff 28.06.2012 15:08

<button onclick='delete_virtual_org(\"delete\",\"Form_ID \")'>Да</button>

Eser 28.06.2012 15:14

Я не очень понял
А откуда в возьмется Form_ID?
Я в том смысле что:
Список-(Передаем id записи и открываем форму)-в форме кнопка ДА,мне надо как то передать заначение id-элемента из списка это кнопке?

Deff 28.06.2012 15:19

Цитата:

Сообщение от Eser
откуда в возьмется Form_ID?

Ну
Вариант раз: (если я правильно понял что кнопка на каждую форму своя,
дык проставляете PHP(ой) и ID удаляемого элемента и в кнопке

Eser 28.06.2012 16:30

Как бы объяснить.
Нет форма общая для всех -это просто контейнер для кнопок "ДА" и "НЕТ".
Мне одной функции delete_virtual_org() нужно передать сначала id-(порядковый номер элемента в базе), а вот удалить его только после нажатия на кнопку "ДА".

Вы предлагаете функции передать два аргумента.
<button onclick='delete_virtual_org(\"delete\",\"Form_ID \")'>Да</button>
С "delete" все понятно он руками забит, а вот Form_ID как я не понимаю? Ведь он существует при первом запуске формы.

lord2kim 28.06.2012 16:34

Цитата:

Сообщение от Eser (Сообщение 184950)
Как бы объяснить.
Нет форма общая для всех -это просто контейнер для кнопок "ДА" и "НЕТ".
Мне одной функции delete_virtual_org() нужно передать сначала id-(порядковый номер элемента в базе), а вот удалить его только после нажатия на кнопку "ДА".

Вы предлагаете функции передать два аргумента.
<button onclick='delete_virtual_org(\"delete\",\"Form_ID \")'>Да</button>
С "delete" все понятно он руками забит, а вот Form_ID как я не понимаю? Ведь он существует при первом запуске формы.

вы можете достать из БД тот самый необходимый ID перед/во время загрузки страницы с кнопками "ДА"/"НЕТ" ?

Deff 28.06.2012 16:45

Eser,
Ну всё одно - какая сложность на серве вставить в кнопку id,? того, что оно должно удалить ?

Eser 28.06.2012 16:47

Да конечно могу.

Может вы так имели ввиду?:
<button onclick='delete_virtual_org(\"delete\")' id='virtual_org_delete_button'>Да</button>
Т.е добавляем id кнопки.

А функции делаем так:
function delete_virtual_org(value)
{
if(!isNaN(value))
{
var id=value;
document.getElementById('virtual_org_delete_button').value=value;//Т.е теперь кнопка знает что ее значение = value
}
}
И при нажатии на нее  мы получим тот же самый id обратно.

lord2kim 28.06.2012 16:49

Цитата:

Сообщение от Eser (Сообщение 184963)
Да конечно могу.

Может вы так имели ввиду?:
<button onclick='delete_virtual_org(\"delete\")' id='virtual_org_delete_button'>Да</button>
Т.е добавляем id кнопки.

А функции делаем так:
function delete_virtual_org(value)
{
if(!isNaN(value))
{
var id=value;
document.getElementById('virtual_org_delete_button').value=value;//Т.е теперь кнопка знает что ее значение = value
}
}
И при нажатии на нее  мы получим тот же самый id обратно.

правильнее так было бы
<button onclick='delete_virtual_org(\"delete\", \"virtual_org_delete_button\")'>Да</button>

function delete_virtual_org(value, id)
{
...
}

Eser 28.06.2012 16:56

Ура все получилось!
Спасибо большое!!!


Часовой пояс GMT +3, время: 15:32.