2015-05-08 4 views
1

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

Теперь, когда я заполняю информацию и нажимаю отправить, она даст мне сообщение об ошибке. Я не вижу ничего плохого, и есть ошибки набора отчетов для на (возможно, на том месте), вот код PHP:

<?php 
ini_set('display_startup_errors',1); 
ini_set('display_errors',1); 
error_reporting(-1); 


if (isset($_REQUEST['name'],$_REQUEST['email'])) { 

    $name = $_REQUEST['name']; 
    $email = $_REQUEST['email']; 
    $message = $_REQUEST['message']; 

    $to = 'editedforstackoverflow'; 

    $subject = 'Contact Request From Website'; 
    $headers = "From: ".$name." <".$email."> \r\n"; 

    $send_email = mail($to,$subject,$message,$headers); 

    echo ($send_email) ? 'success' : 'error'; 

} 

?> 

А вот JS часть:

$('#ajax-contact').on('submit', function() { 

    // Add text 'loading...' right after clicking on the submit button. 
    $('.output_message').text('Loading...'); 

    var form = $(this); 
    $.ajax({ 
     url: form.attr('action'), 
     method: form.attr('method'), 
     data: form.serialize(), 
     success: function(result) { 
      if (result == 'success') { 
       $('.output_message').text('Nachricht erfolgreich geschickt!'); 
      } else { 
       $('.output_message').text('Da ist leider ein Fehler unterlaufen!'); 
      } 
     } 
    }); 

    // Prevents default submission of the form after clicking on the submit button. 
    return false; 
}); 

Я могу» я действительно вижу, какую ошибку я сделал, любая помощь будет оценена!

ответ

2

Глядя на вашу форму на вашем сайте, это, кажется, ваши <input> теги отсутствуют те name атрибут на полях name и email:

Они должны иметь что name="name" и name="email" так, чтобы .serialize() мог получить эти значения и привести их в свой запрос. Так что, в свою очередь, в PHP, они будут внутри вашего $_REQUEST

Вот демоверсия на то, что я имею в виду на тех недостающих name="". Я явно опускаю поле 3, чтобы вы могли видеть.

http://codepad.viper-7.com/rTTPuq

Так что исправление. Просто добавьте name="name" и name="email" на те <input> теги.

Фактическое примечание в manual:

Примечание: Только "успешные управления" упорядочиваются в строку. Значение кнопки отправки не сериализуется, так как форма не была отправлена ​​с помощью кнопки. Для значения элемента формы, которое должно быть включено в сериализованную строку, элемент должен иметь атрибут name.

+0

Спасибо! То есть, когда вы слишком много фокусируетесь на том, чтобы сделать его более привлекательным, чем заставить его работать :) – Paranoia

+0

@Paranoia да, вы полностью забыли о том, что 'name =" "' рад, что это помогло – Ghost

1

ваше утверждение if абсолютно неверно.
вы не можете отделить 2 заявления с помощью ,, их следует разделить || или &&.
The Logical Operators статья поможет вам ознакомиться с этими операторами.
также, $_REQUEST is very insecure.its лучше всего не использовать их. Причина, по которой они не используются, объясняется Here.

+0

Изменено, спасибо за подсказку :) – Paranoia

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