2016-10-04 48 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