0

null从我的文本框中获取值。

日期工作正常,但我无法从输入框中获取数据。

(function () {

    if ($('#contactform').length) {

        var $form = $('#contactform'),
            $loader = '<img src="images/preloader.gif" alt="Loading..." />';
        $form.append('<div class="hidden" id="contact_form_responce">');

        var $response = $('#contact_form_responce');
        $response.append('<p></p>');

        $form.submit(function (e) {

            $response.find('p').html($loader);

            var data = {
                action: "contact_form_request",
                values: $("#contactform").serialize()
            };

            //send data to server
            $.post("php/contact-send.php", data, function (response) {

                $(".wrong-data").removeClass("wrong-data");
                $response.find('img').remove();

                if (response.is_errors) {

                    $response.find('p').removeClass().addClass("error type-2");
                    $.each(response.info, function (input_name, input_label) {

                        $("[name=" + input_name + "]").addClass("wrong-data");
                        $response.find('p').append('Please enter correctly "' + input_label + '"!' + '</br>');
                    });

                } else {

                    $response.find('p').removeClass().addClass('success type-2');

                    if (response.info == 'success') {

                        $response.find('p').append('Your email has been sent!');
                        $form.find('input:not(input[type="submit"], button), textarea, select').val('').attr('checked', false);
                        $response.delay(1500).hide(400);
                    }

                    if (response.info == 'server_fail') {
                        $response.find('p').append('Server failed. Send later!');
                    }
                }

                // 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 (!$('#contact_form_responce').css('display') == 'block') {
                    $response.show(450);
                }

            });

            e.preventDefault();

        });

    }

})();

这是php:

require_once "../includes/database.php";

$cname    = $_POST['name'];
$cemail   = $_POST['email'];
$cmessage = $_POST['message'];
$date     = date("Y-m-d");  
$sql      = "INSERT INTO messages (sendername,senderemail,message,datesent) VALUES (:name,:email,:message,:date)";
$qry      = $db->prepare($sql);

$qry->execute(array(
  ':name'    =>$cname,
  ':email'   =>$cemail,
  ':message' =>$cmessage,
  ':date'    =>$date
));
4

3 回答 3

2

问题在于您将 POST 数据分配给$.post函数的方式。

麻烦的代码

var data = {
   action: "contact_form_request",
   values: $("#contactform").serialize()
};

发生的事情是数据作为多维数组被发送回,您需要将其包含在您的 php 页面中。

尝试更改$_POST['name']$_POST['values']['name']以匹配您的 jQuery 的格式。您需要对每个 POST 变量进行此更改。您始终var_dump($_POST); die;可以确保数组的嵌套。

我应该提一下,如果您想直接访问您的 POST 数据(就像在您的原始 php 中一样),您应该查看jQuery .post()文档。

直接访问 POST ( $_POST['name']) 的语法需要以下代码:

$.post('mypostpage.php', $('myform').serialize(), function(response) {
    //do work
});
于 2013-01-07T13:13:07.013 回答
0

尝试将 移动e.preventDefault()到函数的开头。否则表单可能会在不等待执行所有 jQuery 的情况下提交

于 2013-01-07T13:10:02.483 回答
0

发布您的表单 html 代码

尝试用

$('document').ready(function() {

  });
于 2013-01-07T13:12:59.380 回答