У меня проблема с запросом 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);
});
}
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']
Данные не отправляются в массив _POST, если отправлены так, как вы их отправляете. Вы можете получить его на стороне PHP, используя
json_decode(file_get_contents('php://input'), true)
Или использовать FormData
Объект и удалить заголовки json в js, чтобы получить данные традиционно (через _POST и _GET).
Я использую тот же подход, и он работает для меня. Две вещи, которые вы можете попробовать