基本的に私はおそらくこれを間違った方法で行っているので、正しい方向へのあらゆるプッシュにオープンであることに気付きます。
HipChat APIを使用して、次のような部屋に通知を送信しようとしています。
https://www.hipchat.com/docs/api/method/rooms/message
私はjsオブジェクトのパラメータを使用して例のURLを構築しようとしているので、基本的にこれを変換しようとしています:
var hipChatSettings = {
format:"json",
auth_token:token,
room_id: 1,
from: "Notifications",
message: "Message"
}
これに:
これを確認する必要があります jQuery.param function 。
var params = { width:1680, height:1050 };
var str = jQuery.param( params );
console.log(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Object.keys(hipChatSettings).map(function(k) {
return encodeURIComponent(k) + "=" + encodeURIComponent(hipChatSettings[k]);
}).join('&')
// => "format=json&auth_token=token&room_id=1&from=Notifications&message=Message"
警告:新しいJavaScript。古代人で動作させたい場合は、for
にシムまたは書き換えます。
このような何かがあなたのために働く可能性があります
var str = "?" + Object.keys(hipChatSettings).map(function(prop) {
return [prop, hipChatSettings[prop]].map(encodeURIComponent).join("=");
}).join("&");
// "?format=json&auth_token=token&room_id=1&from=Notifications&message=Message"
ECMAScript 5に依存できない場合は、単純なforループを使用できます
var pairs = [];
for (var prop in hipChatSettings) {
if (hipChatSettings.hasOwnProperty(prop)) {
var k = encodeURIComponent(prop),
v = encodeURIComponent(hipChatSettings[prop]);
pairs.Push( k + "=" + v);
}
}
var str = "?" + pairs.join("&");
ES6バージョン、配列で実際にネストされたオブジェクトを実行できます
encodeURI(getUrlString({a:1、b:[true、12.3、 "string"]}))
getUrlString (params, keys = [], isArray = false) {
const p = Object.keys(params).map(key => {
let val = params[key]
if ("[object Object]" === Object.prototype.toString.call(val) || Array.isArray(val)) {
if (Array.isArray(params)) {
keys.Push("")
} else {
keys.Push(key)
}
return getUrlString(val, keys, Array.isArray(val))
} else {
let tKey = key
if (keys.length > 0) {
const tKeys = isArray ? keys : [...keys, key]
tKey = tKeys.reduce((str, k) => { return "" === str ? k : `${str}[${k}]` }, "")
}
if (isArray) {
return `${ tKey }[]=${ val }`
} else {
return `${ tKey }=${ val }`
}
}
}).join('&')
keys.pop()
return p
}
ダンスに遅れたが、私はこれの簡潔さをかなり楽しんだ:
Object.entries(hipChatSettings)
.map(
([key, val]) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`
)
.join("&");