javascript — выборка React-Native без отправки содержимого тела в $ _POST

У меня проблема с запросом POST, использующим выборку React Native. Запрос работает отлично, но переменные $ _POST не отображаются на всей стороне сервера. Я довольно много искал перед публикацией, но без кубиков.

Может кто-то указать мне верное направление? Код для запроса на получение приведен ниже.

const dataString = `username=${email}&password=${password}`;

export default function ajaxPost(dataString, url, callback) {
return fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(dataString)
})
.then((response) => response.json())
.then((responseJson) => {
callback(responseJson);
})
.catch((error) => {
console.error(error);
});
}

Как я получаю доступ к нему на PHP:

$data = 'username=' . $_POST['username'] . '&password=' . $_POST['password'];
echo json_encode($data);

Я также попробовал жестко запрограммировать следующее:

export default function ajaxPost(dataString, url, callback) {
return fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
username: 'test',
password: 'test123'
})
})
.then((response) => response.json())
.then((responseJson) => {
callback(responseJson);
})
.catch((error) => {
console.error(error);
});
}

1

Решение

export default function ajaxPost(email,password, url, callback) {
return fetch(url, {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
user:{
username: email,
password: password,
}
})
})
.then((response) => response.json())
.then((responseJson) => {
callback(responseJson);
})
.catch((error) => {
console.error(error);
});
}

Теперь получить доступ к имени пользователя и паролю

$_POST['user']['username'], $_POST['user']['password']
1

Другие решения

Данные не отправляются в массив _POST, если отправлены так, как вы их отправляете. Вы можете получить его на стороне PHP, используя

json_decode(file_get_contents('php://input'), true)

Или использовать FormData Объект и удалить заголовки json в js, чтобы получить данные традиционно (через _POST и _GET).

1

Я использую тот же подход, и он работает для меня. Две вещи, которые вы можете попробовать

  1. Удалите ключ подтверждения из заголовков. я не использую этот заголовок
  2. Я заметил, что ваш объект данных называется строкой данных. Возможно ли, что вы строковые данные дважды?
0
По вопросам рекламы [email protected]