使用与redux-api-middleware
和axios
类似的jquery.ajax
,我传递了一个formData,它是图像和其他形式值的混合,如下图所示:
我遇到的问题是,在通过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上生成一个值。
您可以使用...检查变量是否已设置
if(!isset($_POST["ur_varible_name_from_html_form"]))
{
echo "error";
}
你可以在github上看到
redux-api-middleware
repo,发行#125。他们已经从数据中解析并给出了示例[CALL_API]和[RSAA]。