如何使用PHP发布表单序列化数据?

时间:2017-11-21 04:10:36

标签: php jquery ajax codeigniter form-serialize

我有一个包含动态生成字段的表单。我需要使用.serialize()发布表单。

的Ajax

$("#save").click(function () {                              
    formData = $('#myForm').serialize();
    $.ajax({
        type:"POST",         
        url: base_url +'home/save',
        data: {
            formData:formData,
            csrf_test_name: csrf_token
        },
        success: function(response){         
            console.log(response);           
            alert(response);
        }     
    }); 
});

我需要使用输入字段名称发布所有数据。现在我得到了所有结果:

   echo $fomdata=$this->input->post('formData');

输出

room_count_new=5&room_id=1&bedcount_1_1=1&extra_age_1_1_1=middle&extra_age_1_1_2=0&bedcount_1_2=0

但我想发布相应的名字。

1 个答案:

答案 0 :(得分:2)

删除具有formdata属性的对象,只发送序列化字符串并将csrf添加到其末尾,或者将csrf作为隐藏输入添加到表单中并让它序列化也在serialize()

$("#save").click(function() {
  var formData = $('#myForm').serialize();
  formData += '&csrf_test_name=' + csrf_token

  $.ajax({
    type: "POST",
    url: base_url + 'home/save',
    data: formData,
    success: function(response) {
      console.log(response);
      alert(response)
    }
  });
});

然后在php中访问与表单相同的名称。

$fomdata=$this->input->post();

$roomCount = $fomdata['room_count_new'];
$csrfToken = $fomdata['csrf_test_name'];