Equivalente em Javascript de jQuery.parametro()
JQuery.o param () pega numa matriz de pares de valores-chave, e transforma-a numa cadeia que pode usar como uma cadeia de consultas nos pedidos HTML. Por exemplo,
a = {
userid:1,
gender:male
}
seria convertido em
userid=1&gender=male
Estou a tentar ligar para APIs externas do lado do servidor num script do Google Apps, que precisa de cadeias de consulta longas. Eu usaria a função jQuery param, mas parece não haver nenhuma maneira fácil de usar jQuery no lado do servidor no Google.
podes dar-me uma explicação simples? código javascript que alcança a mesma funcionalidade?
a implementação do jQuery é Aqui, mas eu não quero correr o risco de saltar sobre quaisquer detalhes cruciais simplesmente copiando-o e rasgando o código que lida com 'tradicional'.
9
4 answers
Você também pode fazer isso com JavaScript puro, mas você tem que escrever mais linhas de código. Tenta isto.
Código HTML para testes:
<p id="test"></p>
JavaScript a ser disparado onload:
a = {
userid:1,
gender: "male",
}
url = Object.keys(a).map(function(k) {
return encodeURIComponent(k) + '=' + encodeURIComponent(a[k])
}).join('&')
document.getElementById("test").innerHTML=url
A saída é esta:
userid=1&gender=male
Podes experimentar isto. JSFIDDLE.NET, funciona, aqui está o link: http://jsfiddle.net/ert93wbp/
21
Author: Amaynut, 2014-08-10 02:36:30
export function param( params ) {
const p = new URLSearchParams;
for( const [ key, value ] of Object.entries( params ) ) {
p.set( key, String( value ) );
}
return p.toString();
}
1
Author: error, 2018-01-18 17:38:18
A resposta do@Amaynut é fantástica. Mas eu faço algumas simplificações:
const obj = {
userid: 1,
gender: 'male'
}
const params = Object.keys(obj).map((k) => encodeURIComponent(k) + '=' + encodeURIComponent(obj[k])).join('&')
Ou talvez modulá-lo usando o módulo es6:
Util.js
export default {
params (obj) {
return Object.keys(obj).map((k) => encodeURIComponent(k) + '=' + encodeURIComponent(obj[k])).join('&')
}
}
E usar Assim:
import util from './util'
const q = {
userid: 1,
gender: 'male'
}
const query = util.params(q)
console.log(query)
0
Author: csdxf, 2017-04-27 07:22:04
ES6 gives us some nice primitives:
// Function that parses an object of string key/value params to build up
// a string of url params
// requires an object with no nested values
export function parseUrlParams(urlParams) {
const joinByEquals = (pair) => pair.join('=')
const params = Object.entries(urlParams).map(joinByEquals).join('&')
if (params) {
return `?${params}`
} else {
return ''
}
}
Veja isto aqui em acção.:
https://www.webpackbin.com/bins/-KnpOI6hb1AzTDpN3wS7
0
Author: jmares93, 2017-06-29 20:00:55