使用ajax通过电子邮件发送变量的php脚本

时间:2010-12-15 12:46:41

标签: php ajax

我已经在这个主板上发布了ajax部分,并建议请一些php专家寻求帮助。

我遇到的主要问题是我无法管理联系表单中设置的变量已成功通过电子邮件发送给我。因此,php文件本身必定存在错误,尽管它只是一个非常简单的测试文件。

我的JS的重要部分是这样的:

$("#submitQuote").live('click',function(){
var shirt_style = "shirt_style="+$(".dropdown[title=shirt_style] .dropdownValue").text();
      var shirt_type = "&shirt_type="+$(".dropdown[title=shirt_type] .dropdownValue").text();
      var cuffs = "&cuffs="+$(".dropdown[title=cuffs] .dropdownValue").text();
      var chestpoket = "&chestpoket="+$(".dropdown[title=chestpoket] .dropdownValue").text();
      var collar = "&collar="+$(".dropdown[title=collar] .dropdownValue").text();
      var collar_buttons = "&collar_buttons="+$(".dropdown[title=collar_buttons] .dropdownValue").text();
      var fastening = "&fastening="+$(".dropdown[title=fastening] .dropdownValue").text();
      var cut = "&cut="+escape($(".dropdown[title=cut] .dropdownValue").text());

    var Name = "&Name="+escape($("input[name=Name]").val());
      var Email = "&Email="+escape($("input[name=Email]").val());
      var Phonenumber = "&Phonenumber="+escape($("input[name=Phonenumber]").val());
      var Address = "&Address="+escape($("input[name=Address]").val());
      var Zipcode = "&Zipcode="+escape($("input[name=Zipcode]").val());
      var City_country = "&City_country="+escape($("input[name=City_country]").val());
      var Copy = "&Copy="+$(".checkbox[title=Copy]").hasClass("checkboxChecked");

     var form_values1 = shirt_style+shirt_type+cuffs+chestpoket+collar+collar_buttons+fastening+cut;
      var form_values2 = form_values1+Name+Email+Phonenumber+Address+Zipcode+City_country+Copy;


      $.ajax({
       type: "POST",
       url: "http://www. .com/ajax/quote.php",
       data: form_values2,

       success: function() {

        $('html,body').animate({scrollTop:290},1000);
        $("#quoteStepContainer").html('');
        $("#quoteStepContainer").html('<img src="http://www. ...com/img/sent.jpg" width="625" height="160" alt="Thanks" id="thanksImage" />');
        $("#thanksImage").fadeIn(1000);
        $("#quoteStepContainer").delay(1000).animate({"height": "190px"},1500);

       }
      }); 

      return false;


     }); 

html的importnatn部分如下所示:

<form name="quoteForm" method="post" action="#">
  <div id="quoteStep1" class="quoteStep">

    <label>Shirt style</label>
    <div class="dropdown" title="shirt_style"></div>

    <label>Shirt type</label>
    <div class="dropdown" title="shirt_type"></div>

    <label>Collar</label>
    <div class="dropdown" title="collar"></div>

    <label>Collar Buttons</label>
    <div class="dropdown" title="collar_buttons"></div>

    <label>Cuffs</label>
    <div class="dropdown" title="cuffs"></div>

    <label>Chestpoket</label>
    <div class="dropdown" title="chestpoket"></div>

    <label>Fastening</label>
    <div class="dropdown" title="fastening"></div>

    <label>Cut</label>
    <div class="dropdown" title="cut"></div>


   <a href="#" title="To Step 2" class="nextStep"></a>

  </div>



  <div id="quoteStep2" class="quoteStep">

   <p class="stepText">Phew, the last step!</p>

    <label>Your name</label>
    <input type="text" name="Name" class="required" />

    <label>E-mail</label>
    <input type="text" name="Email" />

    <label>Phone number</label>
    <input type="text" name="Phonenumber" />

    <label>Address</label>
    <input type="text" name="Address" />

    <label>Zip-code</label>
    <input type="text" name="Zipcode" />

    <label>City &amp; Country</label>
    <input type="text" name="City_country" />

    <label>Want a copy of the form?</label>
    <div class="checkbox" title="Copy"></div>


   <a href="#" title="To Step 1" class="prevStep"></a>
   <a href="#" title="Submit your inquiry" id="submitQuote"></a>

  </div>

  </form>

输入控件是在另一个js上定义的:

jQuery.fn.dropmenu = function (options,width) {
    var title = jQuery(this).attr('title');
    jQuery(this).css('width',width);
    jQuery(this).append('<div class="dropdownValue" title="'+title+'">'+options[0]+'</div>');
    jQuery(this).append('<ul class="dropdownList" title="'+title+'">');
    for(i=0; i<options.length; i++) { 
        jQuery(this).parent().find('.dropdownList[title='+title+']').append('<li>'+options[i]+'</li>');
    }

    jQuery(this).parent().find('.dropdownList').hide();
    jQuery(this).parent().find('.dropdownList').css('width',width);
    jQuery(this).find('.dropdownList li:first').addClass('first');
    jQuery(this).find('.dropdownList li:last').addClass('last');
    jQuery('.dropdownValue').toggle(function(){
        jQuery(this).parent().find('.dropdownList[title='+title+']').animate({"height": "toggle", "opacity": "toggle"}, 200);
        jQuery(this).addClass("dropdownValueClicked");
        jQuery('.dropdownList').not('.dropdownList[title='+title+']').hide();
    }, function() {
        jQuery(this).parent().find('.dropdownList[title='+title+']').animate({"height": "toggle", "opacity": "toggle"}, 200);
        jQuery(this).removeClass("dropdownValueClicked");
        jQuery('.dropdownList').not('.dropdownList[title='+title+']').hide();
    });

    jQuery('.dropdownList li').live('mouseenter',function() {
        jQuery(this).stop().addClass("hover");
    }).live('mouseleave', function() {
        jQuery(this).stop().removeClass("hover");
    });

    jQuery('.dropdownList[title='+title+'] li').live('mousedown',function(){
        jQuery('.dropdownValue').removeClass("dropdownValueClicked");
        var value = jQuery(this).html();
        jQuery(this).parent().animate({"height": "toggle", "opacity": "toggle"}, 200);
        jQuery(this).parent().parent().find('.dropdownValue[title='+title+']').html(value);
    });
}

并且不起作用的测试php看起来像这样:

<?php
 $mail = $_POST['Email'];
 $name = $_POST['Name'];


 $to = "email@mydomain.com";
 $message =" You received  a mail from ".$mail;
 $message .=" His name is : ".$name;


 if(mail($to,$mail,$message)){
 echo "mail successful send";
} 
else{ 
 echo "there's some errors to send the mail, verify your server options";
}
?>

非常感谢你所有的时间和精力。

亚伦

2 个答案:

答案 0 :(得分:1)

您的表单内容永远不会在您的PHP脚本中处理。 您必须将发送到脚本的值写入$ message变量。 实施例

<?php
 $mail = $_POST['Email'];
 $name = $_POST['Name'];


 $to = "email@mydomain.com";
 $message =" You received  a mail from ".$mail;
 $message .=" His name is : ".$name."\n";
//add content to your mail!!!
 $message .= "Shirt style: {$_POST['shirt_style']}";

 if(mail($to,$mail,$message)){
 echo "mail successful send";
} 
else{ 
 echo "there's some errors to send the mail, verify your server options";
}
?>

答案 1 :(得分:0)

我现在回来并检查了一切。 它似乎比预期的要复杂一点。

实际上,我似乎只接收有效的电子邮件,这意味着当我使用Safari时,电子邮件中包含表单中的变量。 在像FF和IE这样的浏览器上,我只收到没有变量的消息。

所以在Safari上我收到了电子邮件:

  

您收到了来自testmail@test.com的邮件   他的名字是:testname衬衫款式:短款

在我收到的FF和IE上,使用相同的设置消息

  

你收到了他的名字的邮件   是:衬衫式:

此外,我收到IE中的错误

  

拒绝访问

     

行:127标志:287代码:0 URI:   http://www。的.com / JS / jquery.min.js

使用firebug在FF中查看时,我没有收到错误消息。