@ont0shko

Как передать большой JSON через $.ajax и не получить Request entity too large?

Пишу небольшое веб-приложение на Node.js + Express + jQuery.

Есть у меня сервер который через GET отдает JSON документ клиенту. На клиенте этот документ редактируется и передается через POST отбратно на сервер.

И вот когда документ передается на сервер, передается только 1.4 кБайта, а сервер мне отвечает Request entity too large.

Часть кода сервера:
// ...

app.use(bodyParser.json());

// ...

app.post('/post_data', function(req, res) {
    console.log(req);
});

// ...


Часть кода клиента:
$.ajax({
  url: '/post_data',
  type: 'POST',
  dataType: 'json', 
  contentType: 'application/json', 
  data: {translated:JSON.stringify(data)},
  success: function (res) {
    console.log('save');
  }
});


Если поставить limit для bodyParser:
app.use(bodyParser.json({limits: '50mb'}));
То сервер отвечает invalid json, при этом передается только 930 байт.

Как мне этот JSON документ на сервер отправить?
  • Вопрос задан
  • 1502 просмотра
Решения вопроса 2
mr_T
@mr_T
Web-разработчик
Надо добавить processData: false, а тело запроса передать как строку. bodyParser.json() воспринимает все тело запроса как JSON документ, а не как данные формы.

ajax.json({
// ...
processData: false,
data: JSON.stringify(data)
// ...
});


Ну и проблема Request entity too large как раз решается параметром limits, он и задает максимальный размер тела запроса.
Ответ написан
Sivkoff
@Sivkoff
Web Developer
У вас ошибка в отправке данных, нужно так:
...
data: JSON.stringify({translated:data}),
...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы