2017-07-03 12 views
0

にプロパティを追加します。jsが、私は次のように作成したURLを持っているのURLのparamオブジェクト

let forwardBaseUrl = 'https://www.usergems.com/api/gmail/info?' + $.params({ 
       event: 'Click forwarded link', 
       email: btoa(userEmail), 
       properties: { 
        forwardId: btoa(forwardId) 
       } 
      }); 

は後でプロパティにプロパティを追加する簡単な方法はありますオブジェクトです: 私は同じ結果をしたいですこれは:

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 }}) 
+0

forwardBaseUrl新しいURLを取得+ = "&forwardUrl =" + "http://google.at" –

答えて

1

まず、実際のjQueryのメソッドは、$.param()、ない$.params()です。あなたは「のparams」オブジェクト「を構築」して、オブジェクトにプロパティを追加することができる機能を設定するようにコードをリファクタリング場合

次に、あなたはシリアル化された結果をいつでも再生することができるが好き:

var userEmail = "[email protected]"; 
 
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>

0
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' を変更することができます。

//と はconsole.log(restObjgetUrl。)

関連する問題