2016-01-25 2 views
0

Хорошо. Я создаю контактную форму, и у меня есть проблема. Дело в том, что я не контролирую большую часть javascript, и где ошибка, которую я не вижу ........ Я знаю это в файле javascript, который, если я беру, отправляет мне письмо правильно. Но с файлом javascript отправьте мне электронное письмо, но это похоже на то, что вы не выбираете данные для отправки, форму и отправляете ее мне пустым. Но дело в том, что мне нужен этот javascript. Это то, что выводит небольшое сообщение в верхней части формы, чтобы сообщить, что было отправлено успешно. Без меня перенаправлено на пустую страницу с информационным сообщением. Это раздел HTML контактную форму:контактная форма собирает данные не по почте

<div id="contact-section"> 
    <h3>Contacta con nosotros</h3> 
    <div class="status alert alert-success" style="display: none"></div> 
    <form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php"> 
     <div class="form-group"> 
      <input type="text" name="name" class="form-control" required="required" placeholder="Nombre"> 
     </div> 
     <div class="form-group"> 
      <input type="email" name="email" class="form-control" required="required" placeholder="Email"> 
     </div> 
     <div class="form-group"> 
      <textarea name="message" id="message" required="required" class="form-control" rows="4" placeholder="Mensaje"></textarea> 
     </div>       
     <div class="form-group pull-right social-icons"> 
      <input type="submit" class="btn btn-primary pull-right" value="Enviar"</input> 
     </div> 
    </form>   
</div> 

Это отправляет его в файл с именем sendmail.php это:

<?php 
    header('Content-type: application/json'); 
    $status = array(
     'type'=>'success', 
     'message'=>'Gracias por contactar con nosotros. Nos pondremos en contacto con usted lo antes posible ' 
    ); 

    $name = @trim(stripslashes($_POST['name'])); 
    $email = @trim(stripslashes($_POST['email'])); 
    $subject = @trim(stripslashes($_POST['subject'])); 
    $message = @trim(stripslashes($_POST['message'])); 

    $email_from = $email; 
    $email_to = '[email protected]';//replace with your email 

    $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message; 

    $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>'); 

    echo json_encode($status); 
    die; 

Дело в том, что Java-функция, как и я, чтобы научить Послание в той же форме, что это:

// Contact form validation 
    var form = $('.contact-form'); 
    form.submit(function() {'use strict', 
     $this = $(this); 
     $.post($(this).attr('action'), function(data) { 
      $this.prev().text(data.message).fadeIn().delay(3000).fadeOut(); 
     },'json'); 
     return false; 
    }); 

Затем последний Javascript код делает мне хорошее информирование о сообщении, которое было отправлено, и отправить его мне, но ЕМА il blank. Без этого кода мне будет отправлено сообщение электронной почты со всеми данными в сообщении, но я перехожу на пустую страницу с сообщением. И он там ... ...... Спасибо за помощь.

+0

Пожалуйста, пересмотреть свою грамматику, я не могу ее прочитать. –

ответ

0

после много испытаний (как я уже сказал, javascript не является моей специальностью) Я исправил проблему. В методе post ничего не отправлял, мне не хватало информации, которую я отправляю. Я послал это:

$.post("sendemail.php, function(data) { 
 

 
$this.prev().text(data.message).fadeIn().delay(3000).fadeOut(); 
 
     },'json');

Он нес URL и вызвать функцию я хотел сделать. В моем случае это было сразу после вызова URL (sendemail.php), вы отправляете данные будут загружены в URL, а затем вызвать функцию, например:

$.post("sendemail.php", {name: document.getElementById("name").value, email: document.getElementById("email").value, message: document.getElementById("message").value}, function(data) { 
 

 
$this.prev().text(data.message).fadeIn().delay(3000).fadeOut(); 
 
     },'json');

As вы видите, собираете значения формы для отправки. Я провел документацию, которая пришла ко мне очень хорошо. Спасибо за помощь.

0

Вы фактически не разместив ваши данные проверки документы http://api.jquery.com/jquery.post/

Вы переписать JS код, как этот

var form = $('.contact-form'); 
form.submit(function (event) {'use strict', 
    event.preventDefault();//preventDefault 
    var $this = $(this), data = $this.serialize();//serialize data 
    $.post($(this).attr('action'), {data: data}, function(data) { 
     $this.prev().text(data.message).fadeIn().delay(3000).fadeOut(); 
    },'json');//add post data as second parameter 
}); 

В коде PHP

<?php 
    header('Content-type: application/json'); 
    $status = array(
     'type'=>'success', 
     'message'=>'Gracias por contactar con nosotros. Nos pondremos en contacto con usted lo antes posible ' 
    ); 

    $name = @trim(stripslashes($_POST['data']['name']));//get post data 
    $email = @trim(stripslashes($_POST['data']['email']));//get post data 
    $subject = @trim(stripslashes($_POST['data']['subject']));//get post data 
    $message = @trim(stripslashes($_POST['data']['message']));//get post data 

    $email_from = $email; 
    $email_to = '[email protected]';//replace with your email 

    $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message; 

    $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>'); 

    echo json_encode($status); 
    die; 
+0

Скажи мне, что следующим образом: Имя: п Email: п Тема: п сообщение: п – nachito777sk

+0

@ nachito777sk вы можете PLS уточнить ваш комментарий я не понимаю вашу точку –

+0

мне очень жаль. Проблема заключается в том, что электронная почта, отправленная содержит следующее: Email: н Тема: п сообщение: н – nachito777sk

0

// Contact form validation 
 
    var form = $('.contact-form'); 
 
    form.submit(function() {'use strict', 
 
     $this = $(this); 
 
     $.post($(this).attr('action'),{data : $(this).serialize()} , function(data) { 
 
      $this.prev().text(data.message).fadeIn().delay(3000).fadeOut(); 
 
     },'json'); 
 
     return false; 
 
    });

Попробуйте этот фрагмент, вам нужно будет сериализовать форму, а затем отправить.

+0

я продолжать идти тот же – nachito777sk

+0

пожалуйста, прежде чем вы назначаете ВАР поставить этот код и разместить здесь результат: var_dump ($ _POST); умереть; –

+0

в файле sendmail.php или javascript? ??? – nachito777sk

Смежные вопросы