通过 AJAX 发送多个 select + 文本到 PHP 并将内容存储在变量中

Send multiple select + text via AJAX to PHP and store content in variable

我想通过 AJAX 将多个输入(一个是文本,一个是 select multiple)发送到 PHP 文件。数据以序列化的形式正确发送,实际上,使用 console.log,它表明 prod_multi 是一个带有所选选项的完整数组。问题是当我尝试将 prod_multi 的数组值存储在变量中时;如果我回显变量,它是空的。你能帮我解决这个问题吗?

这是代码。

HTML

<form id="form_menu">
  <div class="row row-24">
    <div class="col-sm-12">
      <div class="form-wrap form-wrap-validation validation-with-outside-label">
        <label class="form-label-outside" for="forms-check-name">Name *</label>
          <input class="form-input round-small" id="forms-check-name" type="text" name="name_menu" placeholder="Name" required>
      </div>
     </div>
     <div class="col-sm-12">
       <div class="form-wrap form-wrap-validation">
         <label class="form-label-outside" for="involve-form-product">Products *</label>
            <select class="form-input round-small product" id="involve-form-product" name="prod_multi" multiple required>
               <option disabled="disabled" >Products</option>
               <option>Prod A</option>
               <option>Prod B</option>
               <option>Prod C</option>
               <option>Prod D</option>
             </select>
       </div>
     </div>
     <div class="col-md-6 mt-3">
        <input type="submit" class="button button-primary button-xs round-xl button-block form-el-offset-1" value="Add" id="add_menu" name="add_menu">
     </div>
   </div>
</form>

AJAX

$(document).on('click','#add_menu',function (e) {
  var form = $('#form_menu').serialize();
  e.preventDefault();
            
  $.ajax({
   type: "POST",
   url: "file.php",
   data: form,
   cache: false,
   success: function()
   {
      alert("Ok");
   },
   error: function() 
   {
      alert("Not ok");
   }
 });
});

PHP

$array=$_POST["prod_multi"];
$array_length=count($array);
$list=NULL;
$i=0;
foreach($array as $prod) 
{
    if(++$i == $array_length) 
    {
       $list=$list . $prod;
    } 
    else 
    {
       $list=$list . $prod . ', ';
    }
    $i++;
}

感谢您的帮助。

添加括号将有助于PHP正确处理数据

name="prod_multi[]"