$ _POST не обнаруживает данные formData, переданные из ajax - PullRequest
0 голосов
/ 07 марта 2019

Используя redux-api-middleware, который работает аналогично axios и jquery.ajax, я передал formData, который представляет собой смесь изображения и других значений формы, как вы можете видеть на этом изображении: enter image description here

Проблема, с которой я столкнулся, заключается в том, что после успешного вызова API с помощью запроса POST объект PHP $_POST становится пустым, хотя фактический запрос POST происходит. Это мой фрагмент кода:

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');
        ...
    }
...

Я всегда получаю NULL на моем var_dump. При использовании почтальона и передаче данных формы по телу у меня получается значение $ _POST.

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Вы можете увидеть redux-api-middleware репо на github, выпуски # 125 . Они уже разрешили и привели пример [CALL_API] и [RSAA] с данными.

0 голосов
/ 07 марта 2019

Вы можете проверить, установлена ​​ли переменная или нет, используя ...

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

  echo "error";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...