@gabejonson
Верстальщик с намеком на Front

Как преобразовать данные для запроса на сервер?

Прошу помощи, проблема такова:
есть обычный Fetch()
в нем body, но я так понимаю body надо посылать в формате
foo=foo&bar=bar

но ок, это 2 элемента, а если их 100500?!

И вот возникает сам вопрос... Как из
{
 foo: 'foo',
 bar: 'bar'
}


сделать
foo=foo&bar=bar
  • Вопрос задан
  • 143 просмотра
Решения вопроса 1
Stalker_RED
@Stalker_RED
const params = { foo: 'foo', bar: 'bar' };
const urlParams = new URLSearchParams(Object.entries(params));
fetch('/some/url?' + urlParams);

MDN: URLSearchParams
Поддерживается не везде, полифилл можно взять здесь.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
supervaleha
@supervaleha
Web-development
serialize = function(obj, prefix) {
  var str = [], p;
  for(p in obj) {
    if (obj.hasOwnProperty(p)) {
      var k = prefix ? prefix + "[" + p + "]" : p, v = obj[p];
      str.push((v !== null && typeof v === "object") ?
        serialize(v, k) :
        encodeURIComponent(k) + "=" + encodeURIComponent(v));
    }
  }
  return str.join("&");
}

console.log(serialize({foo: "hi there", bar: { blah: 123, quux: [1, 2, 3] }}));
// foo=hi%20there&bar%5Bblah%5D=123&bar%5Bquux%5D%5B0%5D=1&bar%5Bquux%5D%5B1%5D=2&bar%5Bquux%5D%5B2%5D=3


По-моему то, что Вам нужно. Нашел здесь.
Ответ написан
Комментировать
twobomb
@twobomb
var obj = {
 foo: 'foo',
 bar: 'bar'
};

var str  = "";
for(var key in obj)
	str+=key+"="+obj[key]+"&";
 str = str.substr(0,str.length-1);
 alert(str)//foo=foo&bar=bar
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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