【问题标题】:How to post form serialize data using PHP?如何使用 PHP 发布表单序列化数据?
【发布时间】:2018-05-04 10:34:41
【问题描述】:

我有一个包含动态生成字段的表单。我需要使用 .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

但我想用相应的名字发帖。

【问题讨论】:

  • 使用 jQuery $.ajax 你可以像这样发送datadata: { var1:val1, var2:val2, var3:val3 ... }

标签: php jquery ajax codeigniter form-serialize


【解决方案1】:

摆脱带有formdata属性的对象,只发送序列化字符串并将csrf添加到它的末尾或将csrf作为隐藏输入添加到表单中,让它也在@987654323中序列化@

$("#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中访问与form中相同的名称。

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

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

【讨论】:

  • 如何使用对应的字段名发布数据
  • 我们只能用formData这个名字发帖
  • 使用您的 $formData 数组更新。这与您提交没有 ajax 的表单完全相同
  • 我得到了结果..你能告诉我如何像 $this->input->post() 那样发帖
  • 不清楚你在问什么。我在答案底部展示了如何使用$this->input->post()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-23
  • 2016-03-16
  • 2018-03-29
  • 2023-02-09
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多