jQuery UI MultiSelect Widget插件不将数据从HTML表单传递给PHP邮件程序

时间:2015-08-18 15:18:05

标签: php jquery

我正在尝试在Jquery UI Multiselect Widget中使用图像。一切似乎工作得很好,除非我尝试将选择颜色列表传递给php以通过电子邮件发送。在电子邮件中我只收到了最后选择的项目,所以如果我选择黑色和蓝色,我只会在电子邮件中收到蓝色。

我正在使用这个html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>jQuery MultiSelect Plugin Tests</title>
    <link rel="stylesheet" type="text/css" href="multiselect/jquery.multiselect.css" >
    <link rel="stylesheet" type="text/css" href="multiselect/style.css" >
    <link rel="stylesheet" type="text/css" href="multiselect/jquery-ui.css" >
    <script type="text/javascript" src="multiselect/jquery.js"></script>
    <script type="text/javascript" src="multiselect/jquery-ui.min.js"></script>
    <script type="text/javascript" src="multiselect/jquery.multiselect.js"></script>
    </head>
    <script type="text/javascript">
    $(function(){

  // custom text
   $("#colors").multiselect({
    header: false,
    height: 250,
    noneSelectedText: 'Select Color Group(s)',

       });

    });
   </script>

   <body>

   <h1>Form Submission Test</h1>
   <p>Testing to ensure the correct values are actually passed when the form is submitted.</p>

   <form action="colors_mail_handler.php" method="post" enctype="multipart/form-data" style="margin-top:20px">
   <select id="colors" name="colors" multiple="multiple" size="8">
   <option value="beige"       image="menu_stuff/material_beige.png">   &nbsp Beige</option>
   <option value="black"       image="menu_stuff/material_black.png">   &nbsp Black</option>
   <option value="blue"        image="menu_stuff/material_blue.png">    &nbsp Blue</option>
   <option value="brown"       image="menu_stuff/material_brown.png">   &nbsp Brown</option>
   <option value="burgundy"    image="menu_stuff/material_burgundy.png">&nbsp Burgundy</option>

   </select>

   <div><input type="submit" value="Submit" /></div>
   </form>

   <!--
   <script type="text/javascript">
    $("form").bind("submit", function(){
        alert( $('#colors').serialize() );
 return false;
   });
   </script> 
    -->

   </body>
   </html>

并使用此PHP发送电子邮件:

  <?php 
       $to = "memail@gmail.com"; 

       $subject = "Colors submission";

       $message =  $_POST['colors'];


       mail($to,$subject,$message);

       ?>

我已经在HTML中运行了注释掉的代码,该代码为我提供了一个带有“颜色”的警报。变量,这是正确的。

任何人都有我可以尝试的想法或事情吗?

1 个答案:

答案 0 :(得分:1)

您需要在<select>名称中添加括号:

<select id="colors" name="colors[]" multiple="multiple" size="8">

这样,所选值将由php在$_POST['colors']中的数组中发送和检索。 然后,您可以内爆数组以获取要通过电子邮件发送的字符串:

$message = 'No color selected';
if (isset($_POST['colors'])) {
    $message = implode(', ', $_POST['colors']);
}