Где ошибка в попытке отправить данные аяксом, используя PATCH?

Есть сайт с формой. Данные заполненной формы попадают в эндпоинт, структура которого примерно такая:

{
  key_1: "value 1",
  key_2: "value 2",
  key_3: 1,
  key_4: [{key: "value"}, {key: "value"}]
}


На другом сайте мне нужно получить эти данные и сформировать их них другую форму, где каждый ключ эндпоинта - это label, а значение - textarea. В эти textarea можно вносить изменения данных, полученных из формы и сохранять на сервере, в том же эндпойнте.

Пытаюсь использовать вот такой запрос:
$.ajax({
            method: 'PATCH',
            url: url,
            cache: false,
            contentType: 'multipart/formdata',
            processData: false,
            data: dataToSend
        }).fail((response) => {
            console.log(response);
        }).done(() => {
            console.log('done!');
        });


При таком подходе данные вроде уходят на сервер, но не сохраняются (соответствующие ключи эндпоинта не перезаписываются). Если в contentType поместить 'application/json', и dataToSend поместить в JSON.stringify() - то перезаписываются только строковые данные. Но если были изменены значения из массива key_4: [{key: "value"}, {key: "value"}], то данные не перезаписываются и приходит 500 ошибка с сообщением message: "Array to string conversion", exception: "ErrorException". То есть, пока я пытаюсь отправить JSON с чисто строковыми значениями - все норм. Но если там появляется объект - то все накрывается)

Пробовал наполнять объект для отправки и через new FormData(), и просто через {} - ничего не работает.
Что я делаю не так, и как правильно?
  • Вопрос задан
  • 49 просмотров
Пригласить эксперта
Ответы на вопрос 2
@0ffff0
Добрый день, Евгений Журов
Формат JSON - это промежуточный формат используемый для передачи по сети, он нужен нам для представления объектов в виде строк,
learn.javascript.ru
Перед передачей данных, их нужно преобразовать в строковый формат,
JSON.stringify({ x: undefined, y: Object, z: Symbol('') });
MDN web docs

а после передачи такие данные надо распарсить,
JSON.parse('[1, 5, "false"]')
MDN web docs
Ответ написан
Комментировать
Zhuroff
@Zhuroff Автор вопроса
Всем большое спасибо за советы! Проблема оказалась на стороне сервера, сейчас всё работает как часы)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы