gpt4 book ai didi

Javascript 数组到 URL 编码字符串

转载 作者:行者123 更新时间:2023-11-27 22:50:38 24 4
gpt4 key购买 nike

我正在处理网站的数据层,我需要传递一个填充有来自网站后端的值的字符串。

这是我需要传递的变量的结构:

>编码前:

transaction_id=0815/2009;transaction_cid=54AB;item_id=402163045080;item_va lue=25.20;item_quantity=1; transaction_id=0815/2009;transaction_cid=54AB;item_id=402163045080;item_va lue=25.20;item_quantity=1;

>编码后:

transaction_id%3D0815%2F2009%3Btransaction_cid%3D54AB%3Bitem_id%3D40216304 5080%3Bitem_value%3D25.20%3Bitem_quantity%3D1%3Bitem_id%3D847163029054%3Bi tem_value%3D16.81%3Bitem_quantity%3D2

我已成功创建一个包含以下形式的必要数据的数组:

'[{"transaction_id":"233684","transaction_cid":"d2871c13c507583048d8ecf4a16f94c0","i tem_id":"3524","item_value":"4915.13","item_quantity":"1"}]',

但是我需要的是 url 编码字符串中数组的所有这些元素。

我没有主意,因为我尝试的所有方法似乎都不起作用。

使用 JSON.stringify 会保留“:”和“””,使用alert() 或 join 也会保留“:”,但性能不高。

编辑:

数组示例:

arr : {key1: 'a', key2:'b', key3:'c'}

非编码结果:

str : 'key1=a;key2=b;key3=c'

期望结果:

str : 'key1%3Da%3Bkey2%3Db%3Bkey3%3Dc'

最佳答案

JSON.stringify 替换为 encodeURIComponent:

因此,在上面的示例中,您有一个包含一个对象的数组。为了解析它,我会这样做:

var params = elementArray[0];
var encoded_params = [];
for (var prop in params){
if (params.hasOwnProperty(prop)) {
encoded_params.push(prop+ "=" +encodeURIComponent(params[prop]));
}
}
var query_string = "?" + encoded_params.join("&");

注意:我更愿意从头开始解决这个问题,使用您拥有的原始字符串:

transaction_id=0815/2009;transaction_cid=54AB;item_id=402163045080;item_va lue=25.20;item_quantity=1;

// break string into components by splitting on `;`:
var data_as_str = "transaction_id=0815/2009;transaction_cid=54AB;item_id=402163045080;item_va lue=25.20;item_quantity=1;";
var raw_params = data_as_str.split(";");

// create a new array where we will store our encoded params
var encoded_params = [];

// traverse the split string components
for (var i=0; i<raw_params.length; i++){
var element = raw_params[i];

// check that the element exists
// for example, the trailing `;` will create an empty element
// which we do not want to include
if (!element){
continue;
}

// split on `=` to get key, value
var key = element.split("=")[0];
var value = encodeURIComponent(element.split("=")[1]);

// build a new param string and push to clean array
encoded_params.push(key+ "=" +value);
}

// after loop has completed, join elements
// in clean array to complete query string
var query_string = "?" + encoded_params.join("&");
alert(query_string);

关于Javascript 数组到 URL 编码字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38081487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com