0

我对 jQuery 不是很熟悉,但遇到过此代码,用于通过使用来自站点的 jQuery 发送电子邮件。

我坚持的是,通常至少在 HTML/PHP 中,你会有一个 POST/GET 和一个 URL 来指向它。

最后有一行:

$.ajax({ type: 'POST', url: options.url,

但我不知道如何在服务器端处理这个问题。任何想法或指示?

谢谢,新年快乐。

(函数($){

    //define the new for the plugin ans how to call it  
    $.fn.contactable = function(options) {
        //set default options  
        var defaults = {
            name: 'Name',
            email: 'Email',
            message : 'Message',
            subject : 'A contactable message',
            submit : 'SEND',
            recievedMsg : 'Thank you for your message',
            notRecievedMsg : 'Sorry but your message could not be sent, try again later',
            disclaimer: 'Please feel free to contact us',
            hideOnSubmit: false

        };

        //call in the default otions
        var options = $.extend(defaults, options);
        //act upon the element that is passed into the design    
        return this.each(function() {
            //construct the form
            var this_id_prefix = '#'+this.id+' ';
            $(this).html('<div id="contactable_inner"></div><form id="contactForm" method="" action=""><div id="loading"></div><div id="callback"></div><div class="holder"><p><label for="name">'+options.name+'<span class="red"> * </span></label><br /><input id="name" class="contact" name="name"/></p><p><label for="email">'+options.email+' <span class="red"> * </span></label><br /><input id="email" class="contact" name="email" /></p><p><label for="message">'+options.message+' <span class="red"> * </span></label><br /><textarea id="message" name="message" class="message" rows="4" cols="30" ></textarea></p><p><input class="submit" type="submit" value="'+options.submit+'"/></p><p class="disclaimer">'+options.disclaimer+'</p></div></form>');
            //show / hide function
            $(this_id_prefix+'div#contactable_inner').toggle(function() {
                $(this_id_prefix+'#overlay').css({display: 'block'});
                $(this).animate({"marginLeft": "-=5px"}, "fast"); 
                $(this_id_prefix+'#contactForm').animate({"marginLeft": "-=0px"}, "fast");
                $(this).animate({"marginLeft": "+=387px"}, "slow"); 
                $(this_id_prefix+'#contactForm').animate({"marginLeft": "+=390px"}, "slow"); 
            }, 
            function() {
                $(this_id_prefix+'#contactForm').animate({"marginLeft": "-=390px"}, "slow");
                $(this).animate({"marginLeft": "-=387px"}, "slow").animate({"marginLeft": "+=5px"}, "fast"); 
                $(this_id_prefix+'#overlay').css({display: 'none'});
            });

            //validate the form 
            $(this_id_prefix+"#contactForm").validate({
                //set the rules for the fild names
                rules: {
                    name: {
                        required: true,
                        minlength: 2
                    },
                    email: {
                        required: true,
                        email: true
                    },
                    message: {
                        required: true
                    }
                },
                //set messages to appear inline
                    messages: {
                        name: "",
                        email: "",
                        message: ""
                    },          

                submitHandler: function() {
                    $(this_id_prefix+'.holder').hide();
                    $(this_id_prefix+'#loading').show();
$.ajax({
  type: 'POST',
  url: options.url,
  data: {subject:options.subject, name:$(this_id_prefix+'#name').val(), email:$(this_id_prefix+'#email').val(), message:$(this_id_prefix+'#message').val()},
  success: function(data){
                        $(this_id_prefix+'#loading').css({display:'none'}); 
                        if( data == 'success') {
                            $(this_id_prefix+'#callback').show().append(options.recievedMsg);
                            if(options.hideOnSubmit == true) {
                                //hide the tab after successful submition if requested
                                $(this_id_prefix+'#contactForm').animate({dummy:1}, 2000).animate({"marginLeft": "-=450px"}, "slow");
                                $(this_id_prefix+'div#contactable_inner').animate({dummy:1}, 2000).animate({"marginLeft": "-=447px"}, "slow").animate({"marginLeft": "+=5px"}, "fast"); 
                                $(this_id_prefix+'#overlay').css({display: 'none'});    
                            }
                        } else {
                            $(this_id_prefix+'#callback').show().append(options.notRecievedMsg);
                            setTimeout(function(){
                                $(this_id_prefix+'.holder').show();
                                $(this_id_prefix+'#callback').hide().html('');
                            },2000);
                        }
                    },
  error:function(){
                        $(this_id_prefix+'#loading').css({display:'none'}); 
                        $(this_id_prefix+'#callback').show().append(options.notRecievedMsg);
                                        }
});     
                }
            });
        });
    };

})(jQuery);
4

1 回答 1

0

像接收表单一样在服务器上接收数据。

AJAX 请求发送的所有数据都在此处定义(AJAX 选项对象的一部分):

data: {subject:options.subject, 
       name:$(this_id_prefix+'#name').val(), 
        email:$(this_id_prefix+'#email').val(),
         message:$(this_id_prefix+'#message').val()},

在 php 中:

$email=$_POST['email'];
于 2013-01-03T02:25:28.797 回答