Никак не могу разобраться как передать данные собранные с помощью Vue.js в php переменную. Пробовал с помощью axios, но ничего не вышло.
Задача такова: выбираем 2 значения с поля , нажимаем обновить, эти значения передаются в php функцию, там эти значения использую для запроса в БД, потом всё что получил вывожу в html.
Вот код JS:
< script type = "text/javascript" >
new Vue({
el: '#all',
data: {
items: [],
selected1: '',
selected2: '',
},
methods: {
get() {
axios({
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
url: 'query.php',
responseType: 'json'
})
.then(response => (this.items = (response.data)))
.catch(function(error) {
console.log(error)
});
}
},
mounted() {
}
}) <
/script>
Вот так пытаюсь принять на стороне сервера:
if($_SERVER['REQUEST_METHOD']==='POST' && empty($_POST)) {
$_POST = json_decode(file_get_contents('http://php://input'));
$data = 10;
$data = $_POST;
}
Вам нужно отправлять не как x-www-form-urlencoded , а как json:
const config = {
baseURL: API_URL,
headers: {
post: {
'Content-Type': 'application/json',
},
},
};
const instance = axios.create(config);
instance.post('/url', {param1: value1, param2:value2 });
Вот отсюда могу порекомендовать пару ссылок для понимания механики:
На стороне PHP код у вас правильный, я похожим разбираю:
$data = file_get_contents("php://input")
$json = json_decode($data, true);
Всем большое спасибо за ответы, всё помогло.
Реализовал так:
new Vue({
el: '#all',
data: {
items: '',
selected1: '',
selected2: '',
},
methods: {
get() {
axios({
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
data: {
sel1: '2',
sel2: '5',
},
url: 'query.php',
responseType: 'json'
})
.then(response => (this.items = response.data))
.catch(function(error) {
console.log(error)
});
}
},
})
На стороне сервера:
$data = file_get_contents("php://input");
echo json_encode($data, true);
Но ещё появился вопрос, если я на стороне сервера ещё попытаюсь что то вывести, например:
data = file_get_contents("php://input");
echo json_encode($data, true);
echo 10;
Тогда не выводит совсем ничего (что логично). Как быть в таком случае? В том же ajax эту проблему решить легко.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Что я не учёл для соблюдения безопасности при загрузки файла на сервер?
Есть корзина товаров, работает с помощью сессии, а также php обработчик и js файл, который шлет Ajax запросы в обработчик