Jump to content
  • 0

Как передать значение переменной через метод POST по ссылке?


Semreg
 Share

Question

У меня на странице имеется 5 ссылок <a> оформленных в виде кнопок и у них включен ховер эффект.

При нажатии любой из этих кнопок страница должна сабмититься.

Далее в зависимости от того какая кнопка (ссылка) нажата в глобальную переменную сесии должно быть записано одно из значений, типа:

$_SESSION['preview'] = ''one"

$_SESSION['preview'] = ''two" и т.п.

Через URL передавать эти значения переменной для обновляемой страницы я не хочу.

Научите как такое можно сделать через ссылку и через метод POST :)

Может через DHTML както можно?

Edited by Semreg
Link to comment
Share on other sites

19 answers to this question

Recommended Posts

  • 0

Как вариант да. Спасибо за совет.

Попробую так реализовать.

А поправьте меня пожалуйста, если я ошибаюсь.

Насколько я понял всего существует 3и способа передать переменной определенное значение:

1) Через пхп и урл ссылки типа: http://my-site.ru/index.php?preview=one

2) Метод GET

3) Метод POST

Верно? Других способов не существует?

Link to comment
Share on other sites

  • 0
Ребят, ну не прикидывайтесь дуриками - всегда передаются и GET и POST данные, первый это реально описание второго, а POST запрос всегда можно передать с GET

Ваня, ты что хотел этим постом сказать? Честно говоря не уловил смысл )

Link to comment
Share on other sites

  • 0
Как вариант да. Спасибо за совет.

Попробую так реализовать.

А поправьте меня пожалуйста, если я ошибаюсь.

Насколько я понял всего существует 3и способа передать переменной определенное значение:

1) Через пхп и урл ссылки типа: http://my-site.ru/index.php?preview=one

2) Метод GET

3) Метод POST

Верно? Других способов не существует?

Вы, товарисч, перебрали со способами. Их всего 2. из Ваших 1 и 2 - это одно и тоже.

Вот примерчик того, как вы хотите:

// Подключаем jQuery и пишем такой код:

<a href="/example.php" class="poster" value="one">Ссылка 1</a>
<a href="/example.php" class="poster" value="two">Ссылка 2</a>

<script>
$(function(){
$("a.poster").click(function() { // все ссылки с классом .poster
var value = $(this).attr("value"); // поле value
var href = $(this).attr("href"); // поле href - адрес, куда посылать
$.POST( href, {value: value}, function(data) { // посылаем
alert( data );
});
return false;
});
});
</script>

<?php
/**
* file: example.php
*/
$value = isset( $_POST['value'] ) ? $_POST['value'] : false;
if ($value === false) {
die('bad!');
}
else {
print 'good! value = '.$value;
}
?>

http://jquery.com
http://visualjquery.com

2 Иван Шумов : Учи лучше работу веб-серверов. И Апача в частности.

А еще правильнее так:

<form name="some_form" method="post">
<a href="/example.php" class="poster" value="one">Ссылка 1</a>
<a href="/example.php" class="poster" value="two">Ссылка 2</a>

<input type="hidden" name="value" value="nojs" id="for_send_value" />
</form>
<script>
$(function(){
$("a.poster").click(function() { // все ссылки с классом .poster
$("#for_send_value").val( $(this).attr("value") );
$(this).parents("form").submit();
return false;
});
});
</script>

Edited by Kel-Tanas
Link to comment
Share on other sites

  • 0

Kel-Tanas, если я правильно понял, то использование библиотеки jQuery позволяет передать значение переменной без полей инпут/техтареа через прописанные в библиотеке функции js.

Во всех остальных случаях для передачи значений необходимо использовать скрытые поля инпут/техтареа.

Процедуру сабмита страницы с помощью ссылки необходимо выполнять тоже через js.

Верные я выводы сделал? Мне в настоящий момент важно понять технологию выполнения этой процедуры, т.к. передавать значения переменных в форму мне придется часто.

Если я правильно понял, то для передачи значения мне по любому потребуются скрытое(ые) поле(я) input/textarea. Другого не дано. Верно?

———-

Kel-Tanas, благодарю за пару примеров кода. Возьму их на вооружение :)

Link to comment
Share on other sites

  • 0

2 Semreg:

Честно говоря js - вещь великая, особенно, когда работаешь через jQuery. Можно и без нее, но с ней как-то быстее и проще )))

Более правильным, конечно, я вижу использование скрытого поля, которому при помощи JS будет задаваться некое значение, и при сабмите оно будет передаваться в скрипт-обработчик на стороне сервера.

В html нету скрытого поля textarea, да оно и не нужно, так что используйте <input type="hidden" />

Как альтернативу использования JS могу предложить использовать 3 <input type="submit" /> с разными полями name. Отправиться то, по которому кликнули )). Стилизуем, соответственно, как были стилизованы ссылки ;-)))

Как вторую крайность, предлагаю плугин к jquery http://malsup.com/jquery/form/ - полностью аяксовые формы.

Использовал их в одном своем проекте совместно с http://jqueryui.com/demos/dialog/ . Эффект потрясающий 8-)

Но если приложение не закрытое, то следует продумать альтернативные варианты отправки данных, т.к. есть люди, у которых JS отключен.

—————

PS: в целом идеи понял правильно )) продолжай их развивать.

Link to comment
Share on other sites

  • 0

Народ помогите мне разобраться пожалуйста, прочитав эту тему, по примеру Kel-Tanas, создал 2 файла:

1- primer.php)

<html>

<head>

<title>jQuery Window</title>

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>

</head>

<body>

<a href="example.php" class="poster" value="one">Ссылка 1</a>

<a href="example.php" class="poster" value="two">Ссылка 2</a>

<script type="text/javascript" >

$(document).ready(function(){

$("a.poster").click(function() {

var value1 = $(this).attr("value");

alert(value1);

var href1 = $(this).attr("href");

alert(href1);

$jQuery.post(href1, {value: value1},

function(){alert ("тест");});

});

});

</script>

</body>

</html>

2-example.php)

<?php

$value = isset( $_POST['value'] ) ? $_POST['value'] : false;

if ($value === false) {

print 'bad!';

}

else {

print 'good! value = '.$value;

}

?>

при выполнении primer.php вылезают 2 алерта со значением и ссылкой, но вот как доходит дело до передачи по методу POST ничего не происходит (хотя может быть не там ищу =() и example.php не передается значение value1.

Ткните пожалуйста что я делаю не так, я только пробую разобраться с этой библиотекой и на первой же проблеме споткнулся и не знаю что делать дальше

Link to comment
Share on other sites

  • 0

Все что вы привели возможно и понадобится, но не сейчас. =) Дело в том что я только пытаюсь отправить post запрос, на самом деле мне надо чтобы взависимости от нажатой ссылки передавались(и изменялись) разные данные(переменные) после того как страница сгенерирована php, как я понимаю этого сделать с помощью PHP невозможно, а нужно применять javascript, в данном случае я использую jquery...

Edited by bigluc
Link to comment
Share on other sites

  • 0

разрешите в клиниться

нужна помощь уже голову сломал

мне нужно что б при нажатии по ссылке СОХРАНИТЬ выполнялся UPDATE а значения inputa не могу выдернуть

 <form  method="GET" >  
<?
$page_title=$_GET['page_title'];
$izm=$_GET['izm'];
$del=$_GET['del'];
$save=$_GET['save'];
echo'</form>';
include ('config.php');
?>
<form action="person.php" name="form1" method="POST" >
<?
if ($save<>0)
{
$sql=mysql_query('UPDATE person SET PERSON="'.$_POST['izm_person'].'" WHERE ID="'.$save.'"');
}
if ($del<>0)
{
$sql=mysql_query('DELETE FROM person WHERE ID="'.$del.'"');
}
$person=mysql_query('select * from person where nlc="'.$page_title.'"');
$table= "<table border=1>";
$table.= "<td align=center bgcolor=Indianred>Год</td>";
$table.= "<td align=center bgcolor=Indianred>Месяц</td>";
$table.= "<td align=center bgcolor=Indianred>Зарегистрировано</td>";
while($record=mysql_fetch_assoc($person))
{
$table.= "<tr>";
$table.= "<td align=right>".$record['SYS_YEAR']."</td>";
$table.= "<td align=right>".$record['MES']."</td>";
if ($record['ID']==$izm)
{
$table.= '<td><input name="izm_person" type="text" align="right" value="'.$record['PERSON'].'" size="6"></td>';
$table.= '<td><a href="person.php?page_title='.$page_title.'&izm='.$record['ID'].'"><img src="images/b_edit.png" border=0 title="Изменить">Изменить</a></td>';
$table.= '<td><a href="person.php?page_title='.$page_title.'&save='.$record['ID'].'"onClick="document.forms['.form1.'].submit()"><img src="images/b_save.png" border=0 title="Сохранить">Сохранить</a></td>';
}
ELSE
{
$table.= "<td align=right>".$record['PERSON']."</td>";
$table.= '<td><a href="person.php?page_title='.$page_title.'&izm='.$record['ID'].'"><img src="images/b_edit.png" border=0 title="Изменить">Изменить</a></td>';
$table.= '<td><a href="person.php?page_title='.$page_title.'&del='.$record['ID'].'"><img src="images/b_drop.png" border=0 title="Удалить">Удалить</a></td>';
}

}

$table.= "</tr>";
$table.= "</table>";
echo $table;
?>
</form>

Link to comment
Share on other sites

  • 0

1) вот это тут зачем? echo'</form>';

2) у вас action ссылается на person.php, то есть пост запрос и метод у вас пост, а вы пытаетесь в коде производить манипуляции!

3) что за WTF в коде? почему в одной форме три..., нет четыре кнопки при чем на разные операции?

4) отредактировал... )))

5) короче код - кауно! переписать!!! :devil:

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy