2016-10-04 50 views
0

我遇到了一個問題,要通過JS應用程序(跨域)傳輸JSON,使用經典查詢參數有點矯枉過正,如果列表中有列表或列表您的原始JSON,它會過於複雜處理.....通過來自URL(跨域)的查詢參數傳遞JSON

如果JSON不是太大,如果它是在一個URL可以包含的限制下,我們可以用不同的方式來做到這一點.....(請參閱我的文章的回答)

回答

1
  1. 轉換的JSON到URL安全字符串:

    var myJsonStr= JSON.stringify(myJson); var myJsonURLSafe= encodeURIComponent(myJsonStr);

  2. 與一個單一的參數傳遞給它在你的目標網址:

    window.location.replace(window.location.protocol+'//'+window.location.host+'/mysite/#targetPage?myJson='+myJsonURLSafe);

  3. 在傳輸的另一邊,之後我們讀這個參數,我們將其轉換回JSON:

    //function to read parameters 
    getUrlVars: function() { 
           var vars = [], hash; 
           var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
           for (var i = 0; i < hashes.length; i++) { 
            hash = hashes[i].split('='); 
            vars.push(hash[0]); 
            vars[hash[0]] = hash[1]; 
           } 
           return vars; 
          } 
    

函數來獲取JSON:

 getMyJsonData:function(){ 
     var urlValue = this.getUrlVars()["myJson"]; 
     var dataJSON = undefined; 
     if(urlValue){ 
      var dataStr= decodeURIComponent(urlValue); 
      dataJSON = JSON.parse(dataStr); 
     } 
    return dataJSON; 
    } 
+0

對不起,我正在編輯我的代碼,它應該是dataJSON,我從dataStr中做了JSON.parse,給出了一個分鐘 –

+0

還有一個'location.search'屬性,您可以同時獲取和設置和操作一個'document.createElement('a')中的url也暴露了所有這些屬性 – charlietfl