ax ios, невозможно передать данные из компонента реакции в файл PHP - PullRequest
0 голосов
/ 04 августа 2020

У меня есть компонент реакции, который вызывает функцию Ax ios. эта функция является общей функцией API, которую я много раз использую в своем приложении, и она отлично работает. Я пытаюсь отправить данные в файл PHP. По какой-то причине я не могу получить данные в файле PHP, я вижу, что есть вызов и он поступает в файл PHP (для этого я использую xdebug).

это код, который у меня есть:

осевая функция:

const apiPath =   apiPath = "http://localhost/bibli/api";

export const apiClient = async(url, method, data) => {
    return new Promise((resolve, reject) => {
        axios({ method, url: `${apiPath}${url}`, data })
            .then(function(response) {
                resolve(response.data);
            })
            .catch(error => {
                reject(error);
            });
    });
};

Это функция в компоненте React:

  componentDidMount() {
    const userid = this.state.userid;
    const page = this.state.page;
  
      // this.props.GetUserData(userid);
    this.getUserDataAPI( userid, page);

    }
    
    async getUserDataAPI (userid, page){
      let userDataKey = { userid, page }
      console.log( ' userDataKey value is on userdata.js ', userDataKey);
      let response = await apiClient('/users/User.php', 'get', userDataKey)
    
    }

в console.log Я вижу данные, которые отправляются, и они не пусты. Я попытался получить данные в файле php, используя $_GET['userid'] и

json_decode(file_get_contents('php://input'));

В чем может быть проблема?

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Вы используете метод GET через Ax ios API, но ваш код не отправляет никаких параметров. Согласно Ax ios документации , вы должны использовать свойство params для отправки параметров URL с запросом GET. В этом случае ваш код станет

const apiPath =   apiPath = "http://localhost/bibli/api";

export const apiClient = async(url, method, data) => {
    return new Promise((resolve, reject) => {
        axios({ method, url: `${apiPath}${url}`, params: data })
            .then(function(response) {
                resolve(response.data);
            })
            .catch(error => {
                reject(error);
            });
    });
};

Но параметры URL должны быть простым объектом или объектом URLSearchParams.

0 голосов
/ 04 августа 2020

Вы можете попробовать, отправив formData

let userDataKey = new FormData();
userDataKey.append("userid", userid);
userDataKey.append("page", page);

Я бы использовал метод POST для этого случая.

Вы сможете прочитать его с помощью $_POST['userid']

...