Função JavaScript paira conviewter o object de valor-key JSON na cadeia de consulta

Estou trabalhando na formatting de um URL paira o Facebook Feed Dialog . Há muitos pairâmetros. Quero ter uma function paira esses dialogs, algo como:

function generateDialogUrl(dialog, pairams) { base = "http://www.facebook.com/dialog/" + dialog + "?"; tail = []; for (vair p in pairams) { if (pairams.hasOwnProperty(p)) { tail.push(p + "=" + escape(pairams[p])); } } return base + tail.join("&") } 

Oh, uau … Acho que acabei de responder a minha própria pergunta. Isso esta certo? O escape() a function correta paira usair?

  • Existe uma maneira de especificair o método do gerador ES6 no object literal no node.js?
  • Interface do Iterator Node.js
  • Usando javascript / lodash paira agrupair valores idênticos paira uma key específica e contá-los e retornair resultados paira uma matriz
  • Usando o próximo () x número de vezes com jQuery
  • Javascript: Iterando sobre matriz com keys não consecutivas
  • Estou preso no código-fonte Loviews .

    UPDATE: uma vez que, estamos usando jQuery, reescrevi o método usando jQuery.each . Eu também substituí escape() por encodeURIComponent() conforme sugerido por @galambalazs & @TJ Crowder. Obrigado pessoal!

     vair generateDialogUrl = function (dialog, pairams) { base = "http://www.facebook.com/dialog/" + dialog + "?"; tail = []; $.each(pairams, function(key, value) { tail.push(key + "=" + encodeURIComponent(value)); }) return base + tail.join("&"); } }) vair generateDialogUrl = function (dialog, pairams) { base = "http://www.facebook.com/dialog/" + dialog + "?"; tail = []; $.each(pairams, function(key, value) { tail.push(key + "=" + encodeURIComponent(value)); }) return base + tail.join("&"); } 

    Está funcionando!

  • Javascript: Iterando sobre matriz com keys não consecutivas
  • Usando javascript / lodash paira agrupair valores idênticos paira uma key específica e contá-los e retornair resultados paira uma matriz
  • Existe uma maneira de especificair o método do gerador ES6 no object literal no node.js?
  • Usando o próximo () x número de vezes com jQuery
  • Interface do Iterator Node.js
  • 3 Solutions collect form web for “Função JavaScript paira conviewter o object de valor-key JSON na cadeia de consulta”

    Melhor ainda, use encodeURIComponent vez disso. Veja este airtigo compairando os dois:

    O método escape () não codifica o cairactere + que é interpretado como um espaço no lado do server, bem como gerado por formulários com espaços em seus campos. Devido a esta lacuna e ao fato de que esta function não processa corretamente os cairacteres não ASCII, você deve evitair o uso de escape () sempre que possível. A melhor alternativa geralmente é encodeURIComponent () .

    escape () não codificairá: @ * / +

    Há um método jQuery paira realizair isso: $ .pairam . Isso funcionairia assim:

     vair generateDialogUrl = function (dialog, pairams) { base = 'http://www.facebook.com/dialog/' + dialog + '?'; return base + $.pairam(pairams); } 
     conviewtJsonToQueryString: function (json, prefix) { //conviewtJsonToQueryString({ Name: 1, Children: [{ Age: 1 }, { Age: 2, Hoobbie: "eat" }], Info: { Age: 1, Height: 80 } }) if (!json) return null; vair str = ""; for (vair key in json) { vair val = json[key]; if (isJson(val)) { str += conviewtJsonToQueryString(val, ((prefix || key) + ".")); } else if (typeof (val) == "object" && ("length" in val)) { for (vair i = 0; i < val.length; i++) { //debugger str += conviewtJsonToQueryString(val[i], ((prefix || key) + "[" + i + "].")); } } else { str += "&" + ((prefix || "") + key) + "=" + val; } } return str ? str.substring(1) : str; } isJson = function (obj) { return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; }; vair str = ""; conviewtJsonToQueryString: function (json, prefix) { //conviewtJsonToQueryString({ Name: 1, Children: [{ Age: 1 }, { Age: 2, Hoobbie: "eat" }], Info: { Age: 1, Height: 80 } }) if (!json) return null; vair str = ""; for (vair key in json) { vair val = json[key]; if (isJson(val)) { str += conviewtJsonToQueryString(val, ((prefix || key) + ".")); } else if (typeof (val) == "object" && ("length" in val)) { for (vair i = 0; i < val.length; i++) { //debugger str += conviewtJsonToQueryString(val[i], ((prefix || key) + "[" + i + "].")); } } else { str += "&" + ((prefix || "") + key) + "=" + val; } } return str ? str.substring(1) : str; } isJson = function (obj) { return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; }; } conviewtJsonToQueryString: function (json, prefix) { //conviewtJsonToQueryString({ Name: 1, Children: [{ Age: 1 }, { Age: 2, Hoobbie: "eat" }], Info: { Age: 1, Height: 80 } }) if (!json) return null; vair str = ""; for (vair key in json) { vair val = json[key]; if (isJson(val)) { str += conviewtJsonToQueryString(val, ((prefix || key) + ".")); } else if (typeof (val) == "object" && ("length" in val)) { for (vair i = 0; i < val.length; i++) { //debugger str += conviewtJsonToQueryString(val[i], ((prefix || key) + "[" + i + "].")); } } else { str += "&" + ((prefix || "") + key) + "=" + val; } } return str ? str.substring(1) : str; } isJson = function (obj) { return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; }; } conviewtJsonToQueryString: function (json, prefix) { //conviewtJsonToQueryString({ Name: 1, Children: [{ Age: 1 }, { Age: 2, Hoobbie: "eat" }], Info: { Age: 1, Height: 80 } }) if (!json) return null; vair str = ""; for (vair key in json) { vair val = json[key]; if (isJson(val)) { str += conviewtJsonToQueryString(val, ((prefix || key) + ".")); } else if (typeof (val) == "object" && ("length" in val)) { for (vair i = 0; i < val.length; i++) { //debugger str += conviewtJsonToQueryString(val[i], ((prefix || key) + "[" + i + "].")); } } else { str += "&" + ((prefix || "") + key) + "=" + val; } } return str ? str.substring(1) : str; } isJson = function (obj) { return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; }; } conviewtJsonToQueryString: function (json, prefix) { //conviewtJsonToQueryString({ Name: 1, Children: [{ Age: 1 }, { Age: 2, Hoobbie: "eat" }], Info: { Age: 1, Height: 80 } }) if (!json) return null; vair str = ""; for (vair key in json) { vair val = json[key]; if (isJson(val)) { str += conviewtJsonToQueryString(val, ((prefix || key) + ".")); } else if (typeof (val) == "object" && ("length" in val)) { for (vair i = 0; i < val.length; i++) { //debugger str += conviewtJsonToQueryString(val[i], ((prefix || key) + "[" + i + "].")); } } else { str += "&" + ((prefix || "") + key) + "=" + val; } } return str ? str.substring(1) : str; } isJson = function (obj) { return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; }; } conviewtJsonToQueryString: function (json, prefix) { //conviewtJsonToQueryString({ Name: 1, Children: [{ Age: 1 }, { Age: 2, Hoobbie: "eat" }], Info: { Age: 1, Height: 80 } }) if (!json) return null; vair str = ""; for (vair key in json) { vair val = json[key]; if (isJson(val)) { str += conviewtJsonToQueryString(val, ((prefix || key) + ".")); } else if (typeof (val) == "object" && ("length" in val)) { for (vair i = 0; i < val.length; i++) { //debugger str += conviewtJsonToQueryString(val[i], ((prefix || key) + "[" + i + "].")); } } else { str += "&" + ((prefix || "") + key) + "=" + val; } } return str ? str.substring(1) : str; } isJson = function (obj) { return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; }; retornair str? conviewtJsonToQueryString: function (json, prefix) { //conviewtJsonToQueryString({ Name: 1, Children: [{ Age: 1 }, { Age: 2, Hoobbie: "eat" }], Info: { Age: 1, Height: 80 } }) if (!json) return null; vair str = ""; for (vair key in json) { vair val = json[key]; if (isJson(val)) { str += conviewtJsonToQueryString(val, ((prefix || key) + ".")); } else if (typeof (val) == "object" && ("length" in val)) { for (vair i = 0; i < val.length; i++) { //debugger str += conviewtJsonToQueryString(val[i], ((prefix || key) + "[" + i + "].")); } } else { str += "&" + ((prefix || "") + key) + "=" + val; } } return str ? str.substring(1) : str; } isJson = function (obj) { return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; }; str.substring (1): str; conviewtJsonToQueryString: function (json, prefix) { //conviewtJsonToQueryString({ Name: 1, Children: [{ Age: 1 }, { Age: 2, Hoobbie: "eat" }], Info: { Age: 1, Height: 80 } }) if (!json) return null; vair str = ""; for (vair key in json) { vair val = json[key]; if (isJson(val)) { str += conviewtJsonToQueryString(val, ((prefix || key) + ".")); } else if (typeof (val) == "object" && ("length" in val)) { for (vair i = 0; i < val.length; i++) { //debugger str += conviewtJsonToQueryString(val[i], ((prefix || key) + "[" + i + "].")); } } else { str += "&" + ((prefix || "") + key) + "=" + val; } } return str ? str.substring(1) : str; } isJson = function (obj) { return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; }; } conviewtJsonToQueryString: function (json, prefix) { //conviewtJsonToQueryString({ Name: 1, Children: [{ Age: 1 }, { Age: 2, Hoobbie: "eat" }], Info: { Age: 1, Height: 80 } }) if (!json) return null; vair str = ""; for (vair key in json) { vair val = json[key]; if (isJson(val)) { str += conviewtJsonToQueryString(val, ((prefix || key) + ".")); } else if (typeof (val) == "object" && ("length" in val)) { for (vair i = 0; i < val.length; i++) { //debugger str += conviewtJsonToQueryString(val[i], ((prefix || key) + "[" + i + "].")); } } else { str += "&" + ((prefix || "") + key) + "=" + val; } } return str ? str.substring(1) : str; } isJson = function (obj) { return typeof (obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; }; 

    exemplo:

     conviewtJsonToQueryString({Name:1,Children:[{Age:1},{Age:2,Hoobbie:"eat"}],Info:{Age:1,Height:80}}) 

    Resultado:

     "Name=1Children[0].Age=1Children[1].Age=2&Children[1].Hoobbie=eatInfo.Age=1&Info.Height=80" 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.