За последние 24 часа нас посетил 18051 программист и 1698 роботов. Сейчас ищут 1536 программистов ...

Передача методом POST при нажатии на ссылку

Тема в разделе "PHP для новичков", создана пользователем Kazam, 18 апр 2008.

  1. Kazam

    Kazam Активный пользователь

    С нами с:
    18 апр 2008
    Сообщения:
    4
    Симпатии:
    0
    Есть страница page.php. На ней имеется ряд ссылок. Ссылки открывают эту же страницу, но с различными значениями параметров page и mode. То есть адрес ссылки выглядит так: page.php?mode=1&page=10. Мне нужно, чтобы при нажатии на ссылку произошла передача этих параметров методом POST. В общем виде для каждой ссылки я реализовал это так:
    HTML:
    1.  
    2. <form name="form1" enctype="multipart/form-data" action="1.php" method="post">
    3. <a href="javascript:void(0)" OnClick='document.form1.page.value="10";
    4.                                      document.form1.mode.value="1";
    5.                                      document.form1.submit();'>Ссылка</a>
    6. </form>
    7. <input type="hidden" name="page" value="0">
    8. <input type="hidden" name="mode" value="0">
    9.  
    Метод рабочий, но некрасивый. Посоветуйте, как сделать проще, не используя дополнительных скрытых полей.
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Использовать не скрытые поля.
     
  3. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Так лучше:

    HTML:
    1.  <form name="form1" enctype="multipart/form-data" action="1.php" method="post">
    2.  <input type="hidden" name="page" value="10">
    3.  <input type="hidden" name="mode" value="1">
    4.  <a href="javascript:void(0)" OnClick='document.form1.submit();'>Ссылка</a>
    5.  </form>
     
  4. Kazam

    Kazam Активный пользователь

    С нами с:
    18 апр 2008
    Сообщения:
    4
    Симпатии:
    0
    Дело в том, что ссылок у меня много. Если каждую ссылку засовывать в отдельную форму и создавать там же скрытые поля, то отправляться будут значения с полей последней формы. Это происходит потому, что у полей одинаковые имена.
     
  5. +Sten+

    +Sten+ Активный пользователь

    С нами с:
    27 авг 2007
    Сообщения:
    978
    Симпатии:
    0
    Kazam
    Делай 1 скрытую форму. Отправляй ее через функцию:

    HTML:
    1. <script language="JavaScript">
    2. function SubmitForm(page, mode) {
    3.  document.form1.page.value = page;
    4.  document.form1.mode.value = mode;
    5.  document.form1.submit();
    6. }
    7. <form name="form1" enctype="multipart/form-data" action="1.php" method="post">
    8.  <input type="hidden" name="page">
    9.  <input type="hidden" name="mode">
    10. </form>
    11. <a href="javascript:SubmitForm(10,1);">Ссылка 1</a>
    12. <a href="javascript:SubmitForm(2,12);">Ссылка 2</a>
    13. <a href="javascript:SubmitForm(21,33);">Ссылка 3</a>
     
  6. Kazam

    Kazam Активный пользователь

    С нами с:
    18 апр 2008
    Сообщения:
    4
    Симпатии:
    0
    Это то же самое, что и я написал, только вынесено в отдельную функцию. Вопрос стоит такой, как послать эти параметры через POST, не используя скрытые поля вообще.
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Аякс тогда только.

    И обязательно параметры через пост передавать? Через куки нельзя?
     
  8. Kazam

    Kazam Активный пользователь

    С нами с:
    18 апр 2008
    Сообщения:
    4
    Симпатии:
    0
    Не хочу использовать куки, потому что там, где будут проссматривать страничку, возможно, они будут запрещены. Вообще, думаю, я сам справлюсь. Спасибо.
     
  9. faleev

    faleev Активный пользователь

    С нами с:
    15 май 2011
    Сообщения:
    1
    Симпатии:
    0
    На самом деле есть еще несколько способов.
    Можно передать данные в сессии, в куки, но поскольку Вас интересует POST вот Вам несколько ссылок
    http://webi.ru/webi_articles/6_7_f.html
    http://www.masterwebs.ru/index.php?showtopic=3509
    http://i-novice.net/peredacha-formy-met ... sposobami/
    http://sevidi.ru/webd/dweb/phppage62.php

    Или можно сделать так


    <?php
    print_r($_POST);
    ?>

    <br>
    <html>
    <head>
    </head>
    <body>
    <script language="JavaScript" type="text/javascript">
    function submForm( var_name, var_value ) {
    var f = document.getElementById( "id_form" );
    var hid = document.createElement( "input" );
    hid.setAttribute( "type", "hidden" );
    hid.setAttribute( "name", var_name );
    hid.value = var_value;
    f.appendChild( hid );
    /* Отправка формы */
    f.submit();
    return false; // На всякий случай, чтобы ссылка не сработала.
    }
    </script>

    <form method=POST id="id_form"> </form>
    <a href="#" onclick="return submForm('id1','Переменная 1')">Первый</a><br>
    <a href="#" onclick="return submForm('id2','Переменная 2')">Второй</a>
    <br>
    </body>
    </html>
     
  10. Alex_pac

    Alex_pac Активный пользователь

    С нами с:
    11 апр 2011
    Сообщения:
    285
    Симпатии:
    1
    Адрес:
    Россия, Тольятти
    у куков память маленькая