表单名称数组不起作用

时间:2018-07-18 13:19:20

标签: javascript php html

是什么原因导致阵列无法正确形成?我得到以下结果。

array(1) {
   ["element[119"]=>
   array(1) {
     ["data"]=>
     string(1) "0"
   }
 }

结果显示如下。

array(1) {
  ["element"]=>
  array(1) {
    ["119"]=>
    array(1) {
      ["data"]=>
      string(1) "0"
    }
  }
}

简化的前端:

<input class="custom-control-input data is-valid" data-parent="0" data-qid="119" name="element[119][data]" id="119-Yes" type="radio" onchange="showTextBox(this)" value="1" checked="">

<script type="text/javascript">
var formData = {};
          $(form).find(":input.data:visible, input[type=hidden].data").each(function (index, node) {
              formData[node.name] = node.value;
          });
          console.log(formData);
$.ajax({
            url: "index.php?route=form/form/saveSection",
            data: { form_id: $("#formRequest").data("formsaveid"), section_id: $("#formRequest").data("currentsectionid"), path: $("#formRequest").data("formpath"), action: "saveSection", data: formData},
            dataType: "json",
            method: "POST",
            beforeSend: function() {
              console.log("Saving Section...");
              console.log("Section ID: "+$("#formRequest").data("currentsectionid"));
              console.log(postData);
            },
            success: function(data) {
            }
          });
</script>

简化的后端:

var_dump($data);exit;

2 个答案:

答案 0 :(得分:1)

问题在于您处理数据的方式

$(form).find(":input.data:visible, input[type=hidden].data").each(function (index, node) {
      formData[node.name] = node.value;
});

真的,您需要序列化整个表单并将其转换为json,因此将上面的内容替换为:

var formData = JSON.parse($(form).serializeArray());

然后您可以:

<?php
    var_dump($_POST['data']);

答案 1 :(得分:0)

window.open("score_display.php?score="+_score);

尝试将所有内容封装在HTML的名称标签中的数组括号内。