$ _POST不检测从ajax传递的formData

问题描述 投票:0回答:2

使用与redux-api-middlewareaxios类似的jquery.ajax,我传递了一个formData,它是图像和其他形式值的混合,如下图所示:enter image description here

我遇到的问题是,在通过POST请求成功调用API之后,虽然发生了实际的POST请求,但PHP $_POST对象仍为null。这是我的代码片段:

import { CALL_API } from "redux-api-middleware";

export function createTestAnnouncement(data) {
  return (dispatch, getState) => {
    const { auth: { oauthToken, oauthTokenSecret } } = getState();

    const formData = new FormData();

    Object.entries(data).forEach(([key, value]) => {
      if (key === 'image') {
        formData.append(key, value);
      } else {
        formData.set(key, value);
      }
    });

    return dispatch({
      [CALL_API]: {
        endpoint: "/api/test-announcements",
        method: "POST",
        headers: {
          'xoauthtoken': oauthToken,
          'xoauthtokensecret': oauthTokenSecret,
        },
        body: formData,
        types: [CREATE_TEST_ANNOUNCEMENTS, CREATE_TEST_ANNOUNCEMENTS_SUCCESS, CREATE_TEST_ANNOUNCEMENTS_FAILURE]
      }
    })
  }
}

如何从$_POST对象获取值?我是否正确使用了FormData对象?

编辑:我的控制器就是这个,PS:我相信这是有效的,因为这是在一个简单的application/json请求

use api\controllers\BaseController;
use model\Operations\TestAnnouncements\TestAnnouncementOperation;
use model\DB\TestAnnouncement;

class IndexController extends BaseController
    public function actionCreate()
    {
        var_dump($_POST);
        // Commented this out because the payload is not JSON
        // $request = \Yii::app()->request;

        // $op = new TestAnnouncementOperation();
        // $op->topic = $request->getJSON('topic');
        ...
    }
...

我总是在var_dump上得到一个NULL。使用postman并在body上传递form-data会在$ _POST上生成一个值。

javascript php reactjs yii redux-api-middleware
2个回答
0
投票

您可以使用...检查变量是否已设置

if(!isset($_POST["ur_varible_name_from_html_form"]))
{

  echo "error";
}

0
投票

你可以在github上看到redux-api-middleware repo,发行#125。他们已经从数据中解析并给出了示例[CALL_API]和[RSAA]。

© www.soinside.com 2019 - 2024. All rights reserved.