У меня возникают проблемы при попытке передать параметры методом put с помощью fetch
. Для этого я пытаюсь выполнить следующее
fetch(`brands/${id}`, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({name: 'dummy text'})
})
.then(response => response.json())
.then(json => {
if (json.status === 'ok') {
// do some relevant logic
return false;
}
showErrors(json.errors);
})
.catch(error => console.error(error.message));
Я также пытаюсь использовать интерфейс FormData
const formData = new FormData();
formData.append('name', 'some dummy text');
fetch(`brands/${id}`, {
method: 'PUT',
body: formData
})
.then(response => response.json())
.then(json => {
if (json.status === 'ok') {
// Some relevant logic
return false;
}
showErrors(json.errors);
})
.catch(error => console.error(error.message));
Но я получаю тот же результат (параметр name отсутствует в контроллере)
Осмотрена вкладка сети. Я вижу, что был вызван ajax, и на вкладке params я вижу, чтопеременные передаются.Но при попытке доступа к этим параметрам из контроллера они не отображаются.
Я ценю вашу помощь
В бэкэнде при печатипараметры, полученные в этом запросе, параметр name не указан.
В бэкенде соответствующими частями в определении контроллера являются следующие
Метод обновления может быть вызван только через метод put
static allowedMethods = [
save: 'POST',
update: 'PUT'
]
Здесь я надеюсь, что параметр name имеет значение, но параметр не существует
def update() {
try {
Brand brand = brandService.update(params.id, params.name)
render(contentType: 'application/json') {
[status: 'ok', brand: brand]
}
} catch(ValidationException e) {
render(contentType: 'application/json') {
[status: 'fail', errors: e.errors]
}
}
}