【问题标题】:Passing JSON via Query Parameters from URL (Cross Domain)通过 URL 中的查询参数传递 JSON(跨域)
【发布时间】:2017-02-12 01:09:04
【问题描述】:

我遇到了通过 JS 应用程序(跨域)传输 JSON 的问题,使用经典查询参数有点矫枉过正,如果您在原始 JSON 的列表中有列表或列表,处理起来会过于复杂与.....

如果 JSON 不是太大,如果它在 URL 可以包含的限制下,我们可以使用不同的方式来做到这一点.....(请参阅我的帖子的答案)

【问题讨论】:

    标签: jquery json url cross-domain


    【解决方案1】:
    1. 将 JSON 转换为 URL 安全字符串:

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

    2. 使用 SINGLE 参数将其传递到您的目标 URL:

      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;
        }
    

    【讨论】:

    • 抱歉,我正在编辑我的代码,它应该是我从 dataStr 中进行 JSON.parse 的 dataJSON,请稍等
    • 还有一个location.search 属性,您可以在document.createElement('a') 中获取和设置并操作一个url 也会公开所有这些属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 2014-05-22
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    相关资源
    最近更新 更多