Javascript 객체를 요청을 string
통해 전달할 수 있는 빠르고 간단한 방법으로 알고 GET
있습니까?
아니 jQuery
, 다른 프레임 워크는 없습니다-평범한 자바 스크립트 🙂
답변
이처럼?
serialize = function(obj) {
var str = [];
for (var p in obj)
if (obj.hasOwnProperty(p)) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
return str.join("&");
}
console.log(serialize({
foo: "hi there",
bar: "100%"
}));
// foo=hi%20there&bar=100%25
편집 : 이것도 재귀 객체를 변환합니다 (쿼리 문자열에 PHP “배열”표기법 사용)
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
답변
jQuery에는이를위한 기능이 jQuery.param()
있습니다. 이미 사용중인 경우 다음을 사용할 수 있습니다.
http://api.jquery.com/jquery.param/
예:
var params = { width:1680, height:1050 };
var str = jQuery.param( params );
str
이제 포함 width=1680&height=1050
답변
답변
Object.keys(obj).reduce(function(a,k){a.push(k+'='+encodeURIComponent(obj[k]));return a},[]).join('&')
편집 : 나는이 한 줄짜리를 좋아하지만 허용 된 대답과 의미 적으로 일치하면 더 인기있는 답변 일 것입니다.
function serialize( obj ) {
let str = '?' + Object.keys(obj).reduce(function(a, k){
a.push(k + '=' + encodeURIComponent(obj[k]));
return a;
}, []).join('&');
return str;
}
답변
ES6의 하나의 라이너는 다음과 같습니다.
Object.keys(obj).map(k => `${encodeURIComponent(k)}=${encodeURIComponent(obj[k])}`).join('&');
답변
Node.js v6.6.3 사용
const querystring = require('querystring')
const obj = {
foo: 'bar',
baz: 'tor'
}
let result = querystring.stringify(obj)
// foo=bar&baz=tor
참조 : https://nodejs.org/api/querystring.html
답변
URLSearchParams
인터페이스를 사용하는 것이 좋습니다 .
const searchParams = new URLSearchParams();
const search = {foo: "hi there", bar: "100%" };
Object.keys(search).forEach(key => searchParams.append(key, search[key]));
console.log(searchParams.toString())
또는 검색 객체를 다음과 같이 생성자에 전달하여 :
const obj = {foo: "hi there", bar: "100%" };
const params = new URLSearchParams(obj).toString();