The Bassman
The Bassman

Reputation: 2361

$_POST does not detect the formData passed from ajax

Using redux-api-middleware which works similarly to axios and jquery.ajax, I passed a formData which is a mixture of an image and other form values as you can see on this image: enter image description here

The problem I have is that after successfully calling the API via a POST request, the PHP $_POST object is null though there was an actual POST request happening. This is my code snippet:

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]
      }
    })
  }
}

How will be able to get values from the $_POST object? Did I use the FormData object correctly?

EDIT: My Controller is just this, PS: I am sure this working because this is working on a plain application/json request

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

I always get a NULL on my var_dump. While using postman and passing form-data on the body generates me a value on my $_POST.

Upvotes: 0

Views: 243

Answers (2)

Sen Sokha
Sen Sokha

Reputation: 1902

You can see redux-api-middleware repo on github, issues #125. They already have resolved and given example [CALL_API] and [RSAA] with from data.

Upvotes: 0

anurag pandey
anurag pandey

Reputation: 13

you can check if the variable is set or not using...

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

  echo "error";
}

Upvotes: 0

Related Questions