You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JS Fetch+FormData时PHP接收端的数据获取方案咨询

PHP如何接收FormData格式的POST请求数据?

前端代码示例

事件处理函数

eventReceive: function(info) {
        // 提取需要发送的数据到一个简单对象
        var eventData = {
          title: info.event.title,
          start: info.event.start,
        };
        // 通过AJAX POST请求发送数据,并打印服务器返回的响应
        fetch('<?php \E::get('obj_curr_module')->build_action_path('dev_guideline_ui_calendar','add_event'); ?>', {
            method: 'POST',
            headers: {
              'Accept': 'application/json'
            },
            body: encodeFormData(eventData)
          })
          .then(response => console.log(response))
          .catch(error => console.log(error));
      },

FormData转换函数

const encodeFormData = (data) => {
      var form_data = new FormData();

      for (var key in data) {
        form_data.append(key, data[key]);
      }
      return form_data;
    };

问题描述

我的eventData为JS对象格式,经过encodeFormData函数转换为FormData后,想了解PHP接收端应如何编写才能获取请求体中传递的eventData数据?


PHP接收端实现

由于你通过FormData发送数据,请求的Content-Type会自动设置为multipart/form-data,PHP可以直接通过超全局变量$_POST读取这些字段:

基础接收代码

// 对应dev_guideline_ui_calendar模块的add_event动作处理方法
public function action_add_event() {
    // 安全获取POST字段,避免未定义索引报错
    $title = $_POST['title'] ?? '';
    $start = $_POST['start'] ?? '';

    // 这里可以执行数据验证、写入数据库等业务逻辑
    // 示例:返回接收的数据给前端
    echo json_encode([
        'received_title' => $title,
        'received_start' => $start
    ]);
    exit;
}

额外注意点

  • 如果start字段是FullCalendar的日期对象,FormData会将其序列化为ISO格式字符串(如"2024-05-20T14:30:00"),PHP端可以用DateTime类转换为需要的格式:
    if (!empty($start)) {
        $start_datetime = new DateTime($start);
        $formatted_start = $start_datetime->format('Y-m-d H:i:s'); // 转换为常用的时间格式
    }
    
  • 若你使用的PHP框架提供了请求封装(比如自定义的请求对象),也可以用框架自带的方法获取参数,例如:
    $title = $this->request->getPost('title');
    

内容的提问来源于stack exchange,提问作者Kinesis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 11:35:28