Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Отправка формы без регистрации
Форумы портала PHP.SU » » Вопросы новичков » Отправка формы без регистрации

Страниц (1): [1]
 

1. Pavel8897 - 27 Сентября, 2017 - 16:11:36 - перейти к сообщению
Здравствуйте! Есть форма, которая отправляется. К ней добавил скрипт, который должен отправлять ее без перезагрузки страницы. Но после этого отправка не работает. Подскажите, в чем может быть проблема.

CODE (htmlphp):
скопировать код в буфер обмена
  1. <body>
  2.    
  3.     <form method='POST' accept-charset="UTF-8" action="send.php" id='card' style="float:left; background: #fff; box-shadow: -4px -3px 3px 6px #a5a5a5; border-radius:5px; margin: 0 auto; position: absolute; left: 580px; top: 230px;">
  4.         <div style="margin-left: 13px;">
  5.         <p style="line-height:10px;">Номер CAS</p>
  6.         <input name="numcas" type="text" style="border:1px solid #a5a5a5; border-radius: 5px; width: 380px; height: 30px; margin-bottom:10px;">
  7.         <input name="sendcard" onClick="saveform (this.form);return false;" type="submit" value="Отправить запрос"></input>
  8.         </div>
  9.     </form>
  10.    
  11.    
  12.     <?
  13.        if(isset($_POST['sendcard'])){
  14.      
  15.        $numcas = $_POST['numcas'];
  16.      
  17.            $message = "Номер CAS: $numcas";
  18.            $pagetitle = "Новая заявка с сайта \"$from\"";
  19.            $to = "....ru";
  20.            $from = "admin@center.org";
  21.            $headers  = "Content-type: text/plain; charset=utf-8 \r\n";
  22.            $headers .= "From: $from \r\n";
  23.        mail($to, $pagetitle, $message, $headers);
  24.    }?>
  25.    
  26.     <script>
  27.        $('#card').submit(function(e){
  28.            e.preventDefault();
  29.            $.ajax({
  30.              url: "send.php",
  31.              type: "POST",
  32.              data: $('#card').serialize(),
  33.              success: function(response) {
  34.                //обработка успешной отправки
  35.              },
  36.              error: function(response) {
  37.                //обработка ошибок при отправке
  38.             }
  39.            });
  40.        });
  41.    </script>
  42. </body>
2. andrewkard - 27 Сентября, 2017 - 20:50:23 - перейти к сообщению
Pavel8897 пишет:
Есть форма, которая отправляется. К ней добавил скрипт, который должен отправлять ее без перезагрузки страницы. Но после этого отправка не работает.

jQuery подключен? Почему решили что, не отправляется, дебаг ставили? В консоль браузера смотрели?
3. arbuzmaster - 27 Сентября, 2017 - 21:45:23 - перейти к сообщению
Блин! Опять одна и та же песня! Радость
Вот чего тебе стоит хотя бы посмотреть уроки по PHP на youtbe для начинающих, если уж книжки читать не хочешь? Что бы понимать, что и зачем ты делаешь!
Во первых нужно отделять мух от котлет - php от HTML+JS, то есть разделить это на разные файлы! И иметь хотя бы пространственное понятие, как работает AJAX! Про отсутствие проверки загрузки всех элементов DOM я так понимаю, тебе уже рассказали Подмигивание
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function(){
  2.         $("#card").submit(function(){
  3.                 var str = $(this).serialize();
  4.                 $.ajax( { type: "POST", url: "send.php", data: str, success: function(msg){     //в msg  будет ответ от php скрипта, если ты его отправишь }
  5.                 });
  6.                 return false;
  7.         });
  8. });

И так для начала:
1. у тебя должно быть как минимум 2 файла - index.html(php) и send.php
2. Нужно убрать action="send.php" и method='POST' из формы, так как теперь эти параметры задаются в AJAX. accept-charset="UTF-8" тоже не нужен, так как в Jquery по умолчанию AJAX передает "application/x-www-form-urlencoded; charset=UTF-8"
3. Весь php код перенеси в send.php
4.onClick="saveform (this.form);return false;" - что это? Убери это из INPUT submit, в твоем коде нет такой функции!
4. Pavel8897 - 28 Сентября, 2017 - 13:34:06 - перейти к сообщению
arbuzmaster пишет:
Блин! Опять одна и та же песня! Радость
Вот чего тебе стоит хотя бы посмотреть уроки по PHP на youtbe для начинающих, если уж книжки читать не хочешь? Что бы понимать, что и зачем ты делаешь!
Во первых нужно отделять мух от котлет - php от HTML+JS, то есть разделить это на разные файлы! И иметь хотя бы пространственное понятие, как работает AJAX! Про отсутствие проверки загрузки всех элементов DOM я так понимаю, тебе уже рассказали Подмигивание
CODE (javascript):
скопировать код в буфер обмена

$(document).ready(function(){
$("#card").submit(function(){
var str = $(this).serialize();
$.ajax( { type: "POST", url: "send.php", data: str, success: function(msg){ //в msg будет ответ от php скрипта, если ты его отправишь }
});
return false;
});
});


И так для начала:
1. у тебя должно быть как минимум 2 файла - index.html(php) и send.php
2. Нужно убрать action="send.php" и method='POST' из формы, так как теперь эти параметры задаются в AJAX. accept-charset="UTF-8" тоже не нужен, так как в Jquery по умолчанию AJAX передает "application/x-www-form-urlencoded; charset=UTF-8"
3. Весь php код перенеси в send.php
4.onClick="saveform (this.form);return false;" - что это? Убери это из INPUT submit, в твоем коде нет такой функции!

(Отредактировано автором: 27 Сентября, 2017 - 22:16:52)


Спасибо огромное! Очень помогли!

 

Powered by ExBB FM 1.0 RC1