За последние 24 часа нас посетили 38148 программистов и 1809 роботов. Сейчас ищут 2145 программистов ...

отправка формы без перезагрузки страницы

Тема в разделе "JavaScript и AJAX", создана пользователем lemonl, 29 май 2012.

  1. lemonl

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

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Здравствуйте,

    Подскажите пожалуйста, как реализовать отправку формы без перезагрузки страницы. Есть много примеров, использующие ajax. Дело в том, что мне нужно передавать некоторые данные из php в обработчик формы, и приходится использовать:

    <input type="hidden" name="othname" value="<?php echo $valuephp; ?>">

    таким образом я передаю в ajax post данные из php. Это по всей видимости не правильно... ))) А что если у меня этих input -ов будет много, тогда будет полный пздц.... и некрасивый код. Подскажите логику или пример, как это реализовать. Может знаете как решают эту проблему некоторые популярные сайты.


    ЗЫ:
    используя стандартный способ это выглядит так, но тогда страница перезагружается:
    Код (Text):
    1.  
    2.  if(isset($_POST['send'])) {
    3.   // other code
    4. }
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Если не нравятся hidden input-ы можешь сессии использовать.
    На счёт Ajax - а что, в тех примерах, которые ты видел, нельзя передавать какие-то параметры при запросе к серверу?
     
  3. lemonl

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

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Всегда приходится использовать hidden input-ы
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
  5. Easy

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

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    Бери библиотеку jquery например.
    Вместо генерации кучи инпутов, создаёшь один массив в пхп, что то типа
    Код (Text):
    1. $val = array(
    2.     'othname'=>$valuephp,
    3. // и так далее все твои поля
    4. );
    И делаешь такой скрипт
    Код (Text):
    1. <script>
    2.     function send()
    3.     {
    4.         var val = <?php echo json_encode($val) ?>; // Важно! в конце точка с запятой, пробел или любой другой способ переноса строки
    5.                                                                          // так как после вывода пхп, следующая строка JS станет в этой же строке!
    6.         // val['login'] = $('#login').val()
    7.         $.post(
    8.             $.post("обработчик_формы.php",  val)
    9.         )
    10.     }
    11. </script>
    всё, все твои переменные переданы будут обработчику при вызове функции send() в JS.
    если нужно передать дополнительные поля, напрмиер те что ты заполнил в форме, просто добавь их в json объект в js в функции send, напрмиер как я показал добавление поля логин по id строка закоментирвоана.