[英]js add property to url param object
我有一個通過以下方式創建的網址:
let forwardBaseUrl = 'https://www.usergems.com/api/gmail/info?' + $.params({
event: 'Click forwarded link',
email: btoa(userEmail),
properties: {
forwardId: btoa(forwardId)
}
});
是否有一種簡單的方法可以在以后將屬性添加到properties對象:我想要與此相同的結果:
let forwardBaseUrl = 'https://www.usergems.com/api/gmail/info?' + $.params({
event: 'Click forwarded link',
email: btoa(userEmail),
properties: {
forwardId: btoa(forwardId),
forwardUrl: 'http://google.at'
}
});
最好的方法是合並參數。 與此類似(顯然不起作用):
forwardBaseUrl.params.push({properties: { forwardUrl }})
首先,實際JQuery的方法是$.param()
而不是$.params()
接下來,如果您重構代碼以“構建”“ params”對象並設置一個可以向對象添加屬性的函數,那么您可以隨時重新生成序列化結果:
var userEmail = "me@you.com"; var forwardId = "12345"; var props = { forwardId: btoa(forwardId) }; var paramObj = { event: 'Click forwarded link', email: btoa(userEmail), properties: props }; let forwardBaseUrl = 'https://www.usergems.com/api/gmail/info?' + $.param(paramObj); console.log(forwardBaseUrl); function changeProperties(prop, value, addRemove){ if(addRemove){ // Add new property to properties object props[prop] = value; } else { // remove property from properties object delete props[prop]; } } // Add a new property to the params "properties" object: changeProperties("forwardUrl", "http://google.at", true); // Update serialized params forwardBaseUrl = 'https://www.usergems.com/api/gmail/info?' + $.param(paramObj); console.log(forwardBaseUrl);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
var restObj = {
url: 'https://www.usergems.com/api/gmail/info?'
params: {
event: 'Click forwarded link',
email: 'asda',
properties: {
forwardId: btoa('asd')
}
},
getUrl: function () {
return this.url + $.param(this.params);
}
}
//現在可以更改params對象restObj.params.properties.anotherParam ='param';
//並獲取新的URL console.log(restObjgetUrl。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.