Пустая форма отправляется в php / jquery - PullRequest
1 голос
/ 13 октября 2011

Я написал следующий код, используя jquery и php для отправки формы, когда пользователь нажимает кнопку сохранения, форма успешно отправляется, но данные формата пустые (данные публикации)

Вот что я делаю:

Я проверяю, нажата ли кнопка «Сохранить», если да, то я отправляю письмо и задаю действие формы, а затем отправляю форму.

<form id= "contactform"  method='POST'>   
 .......
<input type='submit' name='submit_details' value=Save />
</form>

<script type="text/javascript">

function submit_form()
{
   $("#contactform").attr("action","https://functions.php"); 
   $("#contactform").submit() 
 }

<?php
if(isset($_POST['submit_details']))
{

   mail("myself@gmail.com", $subject, $mailbody, $headers);
   echo "<script> submit_form(); </script>";
}

?>

но когда я вызываю функцию javascript напрямую, данные формы передаются

<form id= "contactform" onsubmit='javascript:submit_form();' method='POST'>

Итак, в чем здесь проблема.

Ответы [ 3 ]

0 голосов
/ 13 октября 2011

Может быть, я получил то, что вам нужно, в основном вы хотите:

  1. кнопка, при нажатии на которую отправляется электронное письмо;
  2. после этого письма вы хотите отправить всю форму (которую я не знаю. Я предположил, что это то же самое, и вы просто не написали свои поля ввода) для отправки; Возможно, вы захотите переместить эту логику в ваш PHP, поскольку вы уже выполняете обработку.

Итак, если этот рабочий процесс такой, вы можете попробовать:

HTML:

<form id="contactform" method="post" action="">
<!-- your other inputs go here? -->
<input type="text" name="input1" value="" />
<!-- I'm just guessing this ones.. -->
<input type="submit" name="submit_details" value="Salve" />
</form>

JS:

$('#contactform').submit(function({
    var dataString = $(this).serialize();
    $.ajax({
      url: 'functions.php',
      type: 'POST',
      data: dataString,
      success:function(response){
         alert(response);
      }
   });
   return false;
});

PHP functions.php

if($_POST['submit_details'])
{
    //now send email:
    if(mail("myself@gmail.com", $subject, $mailbody, $headers))
    {
      //mail sent: do the rest
      $input1 = isset($_POST['input1']) ? $_POST['input1'] : '';
      // and so on for the rest of the inputs.
      // do whatever you need to.
      return 'Mail sent and data saved!';
    }
    else
    {
      return 'Couldn\'t send mail!';
    }
}
0 голосов
/ 13 октября 2011

просто измените тип кнопки на «кнопку»

      <input type='button' name='submit_details' value=Save onclick="submit_form()" />
0 голосов
/ 13 октября 2011

Дэмиен верен ... хотя ниже работает.

http://jsfiddle.net/D5Ldn/

<form id="contactform" method='POST'>

<input type='submit' name='submit_details' value=Save />
</form>

$('input[type="submit"]').click(function(event)
{
    event.preventDefault();
   $("#contactform").attr("action","https://functions.php"); 
   $("#contactform").submit();
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...