0

我一直在用 JavaScript、PHP 和 HTML 编写表单。我似乎遇到了问题,我觉得它是一个小问题。我已经努力工作了几个小时,问题仍然存在。

我想要工作的表格位于: http ://www.cyberbytesdesign.com/s/ama/contact.php

这是正在使用的 JavaScript:

$(function() {
    // Setup any needed variables.
    var $form   = $('#contact-form'),
        $loader = '<img src="img/loader.gif" height="20" width="20" alt="Loading..." />';

    $form.append('<div id="response" class="hidden">');
    var $response = $('#response');

    // Do what we need to when form is submitted.
    $form.on('click', 'input[type=submit]', function(e){

        // Hide any previous response text and show loader
        $response.hide().html( $loader ).show();

        // Make AJAX request 
        $.post('resources/script/contact-send.php', $form.serialize(), function( data ) {

            // Show response message
            $response.html( data );

            // Scroll to bottom of the form to show respond message
            var bottomPosition = $form.offset().top + $form.outerHeight() - $(window).height();

            if( $(document).scrollTop() < bottomPosition )
                $('html, body').animate({ scrollTop : bottomPosition });

            // If form has been sent succesfully, clear it
            if( data.indexOf('success') !== -1 )
                $form.find('input:not(input[type="submit"], input[type="reset"]), textarea, select').val('').attr( 'checked', false );

        });

        // Cancel default action
        e.preventDefault();
    });
});/*END FUNCTION*/

这是提交表单时使用的 PHP(这是用“else { die('Direct access to this page is not allowed.');”引发的错误)

    // Get email address
    $email_address = 'test@gmail.com';

    // Ensures no one loads page and does simple spam check
    if( isset($_POST['name']) && empty($_POST['spam-check']) ) {

        // Declare our $errors variable we will be using later to store any errors
        $error = '';

        // Setup our basic variables
        $input_name = strip_tags($_POST['name']);
        $input_email = strip_tags($_POST['email']);
        $input_subject = strip_tags($_POST['subject']);
        $input_message = strip_tags($_POST['message']);

        // We'll check and see if any of the required fields are empty
        if( strlen($input_name) < 2 ) $error['name'] = '<label class="inline" for="contact-name">Please enter your <b>Name</b></label>.';
        if( strlen($input_message) < 5 ) $error['message'] = '<label class="inline" for="contact-message">Please leave a <b>Message</b></label>.';

        // Make sure the email is valid
        if( !filter_var($input_email, FILTER_VALIDATE_EMAIL) ) $error['email'] = '<label class="inline" for="contact-email">Please enter a valid <b>Email Address</b></label>.';

        // Set a subject & check if custom subject exist
        $subject = "Customer: Contact Us";
        if( $input_subject ) $message = "Subject: $input_subject\n";
        $message .= "\nMessage: $input_message\n";
        $message .= "\n---\nThis email was sent by $input_name from $input_email";

        // Now check to see if there are any errors 
        if( !$error ) {

            // No errors, send mail using conditional to ensure it was sent
            if( mail($email_address, $subject, $message, "From: $input_email") ) {
                echo '<p class="success"><b>EMAIL SENT SUCCESSFULLY.</b><br />' . "Dear $input_name, " . 'Thank You for contacting RAC-Engineering! Please allow us <b>24-48</b> hours to review your request and get back to you. If you need a response sooner, please contact us via telephone at (716) 695-2269.<br /><br /><b>Please verify that this is your correct Email Address:</b><br />' . "Email Address: <i>$input_email</i>" . '<br /><br /><span class="red"><b>PLEASE NOTE:</b></span><br /> If we do not respond to your request within a reasonable amount of time, please give us a call as there may have been an error on our end with your request.</p>';
            } else {
                echo '<p class="error">There was a problem sending your email! Please give us a call at (716) 695-2269 as there seems to be an error on our end with the form.</p>';
            }

        } else {

            // Errors were found, output all errors to the user
            $response = (isset($error['name'])) ? $error['name'] . "<br /> \n" : null;
            $response .= (isset($error['email'])) ? $error['email'] . "<br /> \n" : null;
            $response .= (isset($error['message'])) ? $error['message'] . "<br /> \n" : null;

            echo "<p class='error'>$response</p>";

        }

    } else {

        die('Direct access to this page is not allowed.');

    }

最后,这是表单的 HTML:

        <div id="contact-form" class="row m-top-10">
          <form action="resource/script/question-send.php" method="post">
            <div class="column-4 required">
              <label class="no-margin" for="request-name"><strong>Name</strong></label>
              <input type="text" name="name" value="" id="request-name" placeholder="First / Last Name" required>
            </div>
            <div class="column-4 required">
              <label for="request-email"><strong>Email Address</strong></label>
              <input class="required" type="email" name="email" value="" id="request-email" placeholder="email@example.com" required>
            </div>
            <div class="column-4">
              <label for="request-subject"><strong>Subject</strong></label>
              <input type="text" name="subject" value="" id="request-subject" placeholder="e.g. Question">
            </div>
            <div class="row column-8 first-column m-top-30-desktop required">
              <label for="request-message"><strong>Your Message</strong></label>
              <textarea class="required" name="message" id="request-message" placeholder="Please include any additional information pertaining to your inquiry." required></textarea>
            </div>
            <div class="hidden">
              <label for="request-spam-check">Do not fill out this field:</label>
              <input name="spam-check" type="text" value="" id="request-spam-check" />
            </div>
            <div class="column-4 m-top-60 m-top-20-mobile">
              <input class="large strong btn btn-blue" type="submit" value="Submit">
            </div>
            <div class="column-4 textcenter last">
              <input class="large strong blue" type="reset" value="Reset">
            </div>
          </form>
          <span class="row"></span>
        </div>

非常感谢,我一直为此让自己发疯,这一定是一件非常微小的事情,一双新的眼睛可能能够捕捉到。

4

1 回答 1

3

而不是写:

if( isset($_POST['name']) && empty($_POST['spam-check']) ) {

试着写:

if (isset($_POST['name']) && trim($_POST['spam-check']) === "") {

我认为这可能会有所帮助。

更新:我知道为什么。

我查看了您网站的代码:

<div id="contact-form" class="row m-top-10">
  <form action="resource/script/question-send.php" method="post">
    <div class="column-4 required">
      <label class="no-margin" for="request-name"><strong>Name</strong></label>
      <input type="text" name="name" value="" id="request-name" placeholder="First / Last Name" required>
    </div>
    <div class="column-4 required">
      <label for="request-email"><strong>Email Address</strong></label>
      <input class="required" type="email" name="email" value="" id="request-email" placeholder="email@example.com" required>
    </div>
    <div class="column-4">
      <label for="request-subject"><strong>Subject</strong></label>
      <input type="text" name="subject" value="" id="request-subject" placeholder="e.g. Question">
    </div>
    <div class="row column-8 first-column m-top-30-desktop required">
      <label for="request-message"><strong>Your Message</strong></label>
      <textarea class="required" name="message" id="request-message" placeholder="Please include any additional information pertaining to your inquiry." required></textarea>
    </div>
    <div class="hidden">
      <label for="request-spam-check">Do not fill out this field:</label>
      <input name="spam-check" type="text" value="" id="request-spam-check" />
    </div>
    <div class="column-4 m-top-60 m-top-20-mobile">
      <input class="large strong btn btn-blue" type="submit" value="Submit">
    </div>
    <div class="column-4 textcenter last">
      <input class="large strong blue" type="reset" value="Reset">
    </div>
  </form>
  <span class="row"></span>
</div>

在 JavaScript 中,你这样写:

var $form   = $('#contact-form')

但是你意识到这#contact-form是一个 div,而不是它里面的表单。

将其更改为:

var $form = $('#contact-form form:first')

那应该可以解决所有问题。

于 2013-10-26T01:35:26.587 回答