0

使用which 与andredux-api-middleware类似,我传递了一个 formData,它是图像和其他表单值的混合,如您在此图像上所见:axiosjquery.ajax在此处输入图像描述

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

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。在使用邮递员并在正文上传递表单数据时,会在我的 $_POST 上生成一个值。

4

2 回答 2

0

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

于 2019-03-07T06:58:14.573 回答
0

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

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

  echo "error";
}
于 2019-03-07T04:45:40.933 回答