使用which 与andredux-api-middleware
类似,我传递了一个 formData,它是图像和其他表单值的混合,如您在此图像上所见:axios
jquery.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 上生成一个值。