javascript 如何通过jquery中的url发送json并在下一个html页面上解析它?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/30498646/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-28 12:17:32  来源:igfitidea点击:

How to send json and parse it on next html page through url in jquery?

javascriptjqueryhtmljson

提问by Hrudaya Palwe

I want to send json data through url to next html page. I checked it by emulator as I am working for mobile app, the url could not redirect to next page it is crashing at the moment what is the reason behind this. How can I parse it on next page .I am new to the jquery any idea? my json data contains result of two different sql queries in an array

我想通过 url 将 json 数据发送到下一个 html 页面。我在为移动应用程序工作时通过模拟器检查了它,该 url 无法重定向到下一页,此时它正在崩溃,这背后的原因是什么。我如何在下一页解析它。我是 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;
        }
 }); 

This is the code on next page

这是下一页的代码

$(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;
)};

采纳答案by Ashish Bhagat

in your case in first page urlencode json

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

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

and in next page

在下一页

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

回答by Gideon

Then try this one:

然后试试这个:

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

And this would be your code for the next page (the iterator is from Satpal's answer):

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

$(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);
});

Though I agree with @Jai that sending username and password in url is not recommended.

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

回答by wolfhammer

Once you get the URL to load you'll need to run your data through some encoding and decoding. You might have the wrong path. If you want "http://Localhost/source/testmenu.html" make sure the first character is a "/".

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

Make sure your data object is encoded correctly.

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

// Encode data for querystring value.
var data = {
  foo: "bar"
};

var data_str = JSON.stringify(data);
data_str = encodeURIComponent(data_str);

Decode and test your URL.

解码并测试您的 URL。

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

回答by Vedank Kulshrestha

Parameter should be html encode while navigating or requesting to the URL and decode at the receiving end. It may suspect potentially dangerous content which may leads to crash.

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