【问题标题】:how to get serialized data from $post and loop through it?如何从 $post 获取序列化数据并循环遍历它?
【发布时间】:2018-01-14 22:13:36
【问题描述】:

我有一个使用 Clonaya 的表单,这是一个 jquery 插件,可以轻松管理选择和输入框克隆。

我的 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,无论是否为数组,如果这些是数组,以确保遍历所有克隆的元素(用于 DB 插入)。

最好的方法是什么?

【问题讨论】:

    标签: jquery arrays post jquery-cloneya


    【解决方案1】:

    您可以使用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 中,您可以:

    $_POST = (array) $parameters;
    

    【讨论】:

    • 谢谢,我会尽快测试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 2016-03-13
    相关资源
    最近更新 更多