如何从$ post获取序列化数据并循环遍历它?

如何从$ post获取序列化数据并循环遍历它?

问题描述:

我有一个使用Cloneya的表单,这是一个jquery插件,可以轻松管理select和inputbox克隆。

我的HTML形式是这样的:

<div class="spacer-b10 colm colm2"> 
    <label class="prepend-icon"><input type="text" name="acc_code[1]" id="acc_code" 
    class="gui-input" placeholder="Code" /> </label> 
    </div> 

    <div class="spacer-b10 colm colm2"> 
    <label class="field select"><select id="acc_name" name="acc_name[1]" style= 
    "font-size:12x"> 
     <option value=""> 
     Account 
     </option> 

     <option value="Administrator"> 
     Administrator 
     </option> 

     <option value="Read Only"> 
     Read Only 
     </option> 
    </select> </label> 
    </div> 

的cloneya插件会自动创建元素名称。

然后,我有以下的AJAX脚本:

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

      $('#account2').submit(function(e) { 

       e.preventDefault(); // Prevent Default Submission 

       $.ajax({ 
         url: 'submit.php', 
         type: 'POST', 
         data: $(this).serialize() // serialize the form data 
        }) 
        .done(function(data) { 
         $('#form-content').fadeOut('slow', function() { 
          $('#form-content').fadeIn('slow').html(data); 
         }); 
        }) 
        .fail(function() { 
         alert('Ajax Submit Failed ...'); 
        }); 
      }); 

在我的文件check.php我要确保让所有是否阵与否,如果这些是数组$ _ POST形式,以确保循环遍历所有克隆的元素(用于数据库插入)。

什么是最好的方法来做到这一点?

您可以使用serializeArray()并发送形式JSON.stringify(paramsToSend)

var paramsToSend = {}; 
 
paramsToSend['form'] = $('#account2').serializeArray(); 
 

 
$.ajax({ 
 
    url: 'submit.php', 
 
    type: 'POST', 
 
    data: { 
 
     params: JSON.stringify(paramsToSend) 
 
    }, 
 
    }) 
 
    .done(function(data) { 
 
    $('#form-content').fadeOut('slow', function() { 
 
     $('#form-content').fadeIn('slow').html(data); 
 
    }); 
 
    }) 
 
    .fail(function() { 
 
    alert('Ajax Submit Failed ...'); 
 
    }); 
 
});

在你的服务器端,submit.php,您可以:

$parameters = json_decode($_POST['params']); 

将它们转换为数组并在中有该数组,你可以:

$_POST = (array) $parameters; 
+0

谢谢,我会尽快测试 –