Вернуть отправленные данные POST с помощью Alpine.js и new FormData ()
Я пытаюсь отправить некоторые данные формы, используя Alpine.js, на текущую страницу, которая затем будет использоваться PHP $_GET для выполнения некоторых функций.
Кажется, что в ответе возвращается вся страница, а не данные формы (которые затем выдаются из-за недопустимого JSON).
Как я могу вернуть только отправленные данные формы в ответе?
<form
method="post"
action="./"
class="form__press"
x-on:submit.prevent="
let formData = new FormData();
formData.append('username', 'Chris');
fetch('./', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(formData)
})
.then((response) => response.json())
.then((result) => {
console.log('Success:', result);
})
.catch((error) => {
console.error('Error:', error);
});"
>
<div class="field mb:15@xs">
<label for="pressEmail">Email</label>
<input type="email" name="pressEmail" autocomplete="off" required />
</div>
<div class="field mb:15@xs">
<label for="pressPassword">Password</label>
<input type="password" name="pressPassword" autocomplete="new-password" required />
</div>
<button type="submit" name="submit">Submit</button>
</form>
1 ответ
Решение
Итак, правильный ответ на этот вопрос заключается в том, что вам нужно, чтобы ваша бэкэнд-функция PHP возвращала JSON с правильным типом содержимого ("application/json").
Однако вы также можете добиться этого на стороне клиента, поскольку у вас есть все данные, которые вы хотите вернуть.
<form
method="post"
action="./"
class="form__press"
x-on:submit.prevent="
let formData = new FormData();
formData.append('username', 'Chris');
fetch('./', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(formData)
})
.then(() => JSON.parse(JSON.stringify(formData)))
.then((result) => {
console.log('Success:', result);
})
.catch((error) => {
console.error('Error:', error);
});"
>