首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >encodeURIComponent不使用数组

encodeURIComponent不使用数组
EN

Stack Overflow用户
提问于 2015-06-04 21:32:35
回答 4查看 6.7K关注 0票数 0

我试图使用Javascript在页面之间传递数据,我需要解码将从Page1传递到Page2的一对数字。包含数字的数组是JSON.parse请求到PHP文件的结果,它查询SQL DB (您现在可以释放呼吸)。

代码语言:javascript
复制
response = '[{"id":"3","course_category":"Dancing & Fitness"}, {"id":"2","course_category":"Fighting"}]';
var myArray = JSON.parse(response);
console.log(myArray[1]['id']);
var foo = encodeURIComponent(myArray[1]['id']);
console.log(foo);

编码总是显示

Uncaught TypeError: Cannot read property 'id' of undefined

这很有趣,因为第一个console.log总是返回一个正确的数字。我也试过这么做

代码语言:javascript
复制
var foo=encodeURIComponent(myArray[1]['id']).toString();

但没有运气。我做错了什么?

示例JSON解析数据

代码语言:javascript
复制
console.log(myArray[0]['id']) //-->shows 3

处理ChangePageEvent的函数

代码语言:javascript
复制
$("#el" + (myArray[i].id).on("click", function () {
    var url = "single_course_page.html?idcat=" + encodeURIComponent(myArray[i].id);
    window.location.href = url;
});
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-06-04 22:13:18

我解决了。这是一个回调的问题。我像这样修改了单击处理程序。

代码语言:javascript
复制
$("#el"+myArray[1].id).on("click", changePagePassingData(id));


function changePagePassingData(id){
return function(){
    var url = "single_course_page.html?idcat=" + encodeURIComponent(id);

        window.location.href = url;
       }
}
票数 0
EN

Stack Overflow用户

发布于 2020-12-07 07:43:45

在我看来,这是最好的。

代码语言:javascript
复制
var obj={"test":"teser", confs:["fdf","dfg"]};

var url=encodeURIComponent(JSON.stringify(obj));

现在,

代码语言:javascript
复制
url="%7B%22test%22%3A%22teser%22%2C%22confs%22%3A%5B%22fdf%22%2C%22dfg%22%5D%7D"

如果您执行JSON.parse(decodeURIComponent(url)),您将得到原始对象。类似于数组..。

票数 0
EN

Stack Overflow用户

发布于 2021-05-05 09:53:01

为了生成查询参数,我使用以下方法:

代码语言:javascript
复制
export const objectToQuerystring = (obj: Dictionary<any>, encode = true): string => {
const doEncode = (val: any) : any => {
    if(encode) return encodeURIComponent(val);
    return val;
}
return Object.keys(obj).reduce((str, key, i) => {
    key = doEncode(key);
    const delimiter = i === 0 ? '?' : '&';
    if(Array.isArray(obj[key])){
        const keyAndVal = obj[key].map((v, i )=> `${i === 0 ? delimiter : '&'}${key}=${doEncode(v)}`).join('')
        return [str, keyAndVal].join('');
    }
    const val = doEncode(obj[key]);
    return [str, delimiter, key, '=', val].join('');
}, '');

};

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30654556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档