2015-01-12 3 views
0

Я создал форму с использованием форм ниндзя на моем веб-сайте WordPress. У меня есть одна длинная форма, которую я разделил на вкладки. Когда пользователь нажимает на первую кнопку для продолжения, я хочу отправить электронное письмо с определенными полями. Проблема в том, что мои переменные не отображаются в моем письме. Я получаю пустые письма.отправить переменные текстового поля через форму php

Я пробовал несколько вещей, включая ajax и отдельный sendme.php. Поскольку я использую Wordpress, я решил использовать функцию wp_mail.

Вот мой код. Переменные работают в моих предупреждениях jquery, но все равно не передаются в мой адрес электронной почты.

Я включил это в свой заголовок.

$("#cont-btn").on('click', function (e) { 
e.preventDefault(); 

    var name = $("#ninja_forms_field_30").val(); 
    var company = $("#ninja_forms_field_76").val(); 
    var title = $("#ninja_forms_field_75").val(); 
    var email = $("#ninja_forms_field_33").val(); 
    var phone = $("#ninja_forms_field_32").val(); 

    $.ajax({ 
    type: "POST", 
    url: "sendme.php", 
    data:{ name: name, company: company, title: title, email: email, phone: phone }, 
    success: function(data){ 
     console.log(data); 
    } 
    }) 
}); 

И это основа моего sendme.php

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$company = $_POST['company']; 
$phone = $_POST['phone']; 


$to = '[email protected]'; 
$subject = 'Enterprise Quote (PT1)'; 
$message = 'Email: ' .$company ; 

$headers = ''; 

mail($to, $subject, $message) or die('Error sending Mail'); //This method sends the mail. 
?> 

несколько вещей:

Я не хочу, чтобы проверить форму. Я не хочу присылать форму. Я хочу, чтобы пользователь остался на странице.

Любая помощь была бы принята с благодарностью. Благодарю.

+0

AFAIK вы не можете выполнить код PHP путь вы делаете. Вы получаете пустое электронное письмо, потому что ваш php-скрипт выполняется при загрузке страницы, поэтому переменные не передаются. – lolbas

+0

Вы не можете смешивать php и javascript. Вам нужно ajax, если вы хотите отправить частичные формы и остаться на одной странице. – jeroen

+1

вам понадобится отдельный PHP-файл, а затем обратный вызов с помощью javascript. Мне лично нравится '$ .post' (это jquery, хотя иногда и ppl здесь ненавижу ответы jquery) –

ответ

0

Вы не можете смешивать PHP и Javascript таким образом, вам нужно разделить php и вызвать его с помощью запросов AJAX.

Итак, сначала поместить код PHP в отдельном файле:

send.php

<?php 
    $headers = 'From: Me Myself <[email protected]>'; 

    $message = $_POST['et_contact_message']; 
    $message .= ' 
    Name: ' . $_POST['ninja_forms_field_30']; 
    $message .= ' 
    Company: ' . $_POST['ninja_forms_field_76']; 
    $message .= ' 
    Email: ' . $_POST['ninja_forms_field_33']; 
    $message .= ' 
    Phone: ' . $_POST['ninja_forms_field_32']; 
    wp_mail('[email protected]', 'Enterprise Get a Quote (PT1)', $message, $headers); 
?> 

Тогда в ваших JS (JQuery)

$("#cont-btn").on('click', function (e) { 
    e.preventDefault(); 
    var formData = $('#the-form').serialize(); //replace 'the-form' with your form id 
    $.post('/link/to/send.php', formData, function(res){ 

    }); 
}); 
+0

Что вы получить из 'console.log (data);'? –

+0

Я не уверен, где получить доступ к этому – Splash

+0

Консоль находится в «Инструментах разработчика» или инспекторе. если вы используете firefox, затем щелкните правой кнопкой мыши, а затем нажмите «Проверить элемент», чтобы переключить инструменты разработчика, затем нажмите на консоли. Когда вы открываете консоль, попробуйте нажать «cont-btn» в форме и посмотреть, какой результат вы получите в консоли –

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