【问题标题】:How to send json and parse it on next html page through url in jquery?如何通过jquery中的url发送json并在下一个html页面上解析它?
【发布时间】:2015-08-10 11:51:42
【问题描述】:

我想通过 url 将 json 数据发送到下一个 html 页面。我在为移动应用程序工作时通过模拟器检查了它,网址无法重定向到当前崩溃的下一页这是什么原因。如何在下一页解析它。我是 jquery 的新手,有什么想法吗?我的 json 数据包含数组中两个不同 sql 查询的结果

 $.ajax({
         type : "POST",
         datatype : "json",
         url : "http://Localhost/phpBB3/check_pass.php?username="+ username + "&password="+ password+"&f=68",
         success: function(data){
             alert(data);

               window.location.href="source/testmenu.html?varid=" + data +"&username=" + username +"&password=" + password;
        }
 }); 

这是下一页的代码

$(document).ready(function GetUrlValue(VarSearch){
       var SearchString = window.location.search.substring(1);

       var arr = SearchString.split('&');
       console.log(arr);
       //Set session variables
       var username = arr[1].split('=')[1];
       var password = arr[2].split('=')[1];
       document.getElementById('username').value = username;
       document.getElementById('password').value = password;
)};

【问题讨论】:

  • 不推荐在url中发送用户名和密码。
  • 你为什么不在第二页再打同样的电话呢?您也可以将其存储在 localStorage 中。第 1 页:localStorage.myJson = myJson; 第 2 页:myJson = JSON.parse(localStorage.myJson);

标签: javascript jquery html json


【解决方案1】:

在导航或请求到 URL 并在接收端解码时,参数应该是 html 编码。它可能会怀疑可能导致崩溃的潜在危险内容。

【讨论】:

  • 这不能回答 OP 的问题。
  • 我们可以通过这种方式发送他想要的任何参数。
  • 在这种情况下,我认为你应该编写一些代码:展示你如何编码 URL,解释你的意思。
  • 编码和解码在网络上无处不在。一个人可以很容易地通过。编码请关注w3schools.com/jsref/jsref_escape.asp 解码请关注w3schools.com/jsref/jsref_unescape.asp
  • 我同意,但在这种情况下,只需写一个评论。不要为这个问题制定一个官方答案,这不是一个答案,只是说“Google around for encoding and decoder”。
【解决方案2】:

在你的情况下在第一页 urlencode json

window.location.href="source/testmenu.html?varid=" + encodeURIComponent(data) +"&username=" + username +"&password=" + password;

在下一页

var data= arr[0].split('=')[1];
var recieved_json = $.parseJSON(data);

【讨论】:

    【解决方案3】:

    那就试试这个吧:

    var data = {
        username: username,
        password: password
    };
    
    $.ajax({
        type: "POST",
        url: "http://Localhost/phpBB3/check_pass.php",
        params: $.param(data),
        success: function(a) {
            window.location.href = "source/testmenu.html?"
                + $.param(a) + "&" + $.param(data)
        }
    });
    

    这将是您的下一页代码(迭代器来自 Satpal 的 answer):

    $(document).ready(function() {
        var params = window.location.search;
    
        var getURLParams = function(params) {
            var hash;
            var json = {};
            var hashes = url.slice(url.indexOf('?') + 1).split('&');
            for (var i = 0; i < hashes.length; i++) {
                hash = hashes[i].split('=');
                json[hash[0]] = hash[1];
            }
            return json;
        }
    
        params = getURLParams(params);
    
        var username = params.username;
        var password = params.password;
        $('#username').val(username);
        $('#password').val(password);
    });
    

    虽然我同意@Jai 的观点,不建议在 url 中发送用户名和密码。

    【讨论】:

      【解决方案4】:

      获得要加载的 URL 后,您需要通过一些编码和解码来运行数据。你可能走错了路。如果您想要“http://Localhost/source/testmenu.html”,请确保第一个字符是“/”。

      确保您的数据对象编码正确。

      // Encode data for querystring value.
      var data = {
        foo: "bar"
      };
      
      var data_str = JSON.stringify(data);
      data_str = encodeURIComponent(data_str);
      

      解码并测试您的网址。

      // Get data from querystring value.
      
      // Get the query as an object with decoded values.
      // Note that JSON values still need parsing.
      function getQuery() {
        var s=window.location.search;
        var reg = /([^?&=]*)=([^&]*)/g;
        var q = {};
        var i = null;
      
        while(i=reg.exec(s)) {
          q[i[1]] = decodeURIComponent(i[2]);
        }
      
        return q;
      }
      
      var q = getQuery();
      
      try {
        var data = JSON.parse(q.data);
      } catch (err) {
        alert(err + "\nJSON=" + q.data);
      }
      

      【讨论】:

        猜你喜欢
        • 2021-07-25
        • 2016-02-17
        • 1970-01-01
        • 2018-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多