encodeuriccomponent不能与数组一起工作
encodeURIComponent not working with array
我试图使用Javascript在页面之间传递数据,我需要解码一对将从Page1传递到Page2的数字。包含数字的数组是AJAX
请求PHP
文件的JSON.parse
结果,该文件查询SQL DB
(您现在可以释放您的呼吸)。
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
总是返回一个正确的数字。我也试过这样做
var foo=encodeURIComponent(myArray[1]['id']).toString();
但运气不好。我做错了什么?
示例JSON解析数据
console.log(myArray[0]['id']) //-->shows 3
处理ChangePageEvent的函数
$("#el" + (myArray[i].id).on("click", function () {
var url = "single_course_page.html?idcat=" + encodeURIComponent(myArray[i].id);
window.location.href = url;
});
我解决了。这是一个回调函数的问题。我像这样修改了点击处理程序。
$("#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;
}
}
我认为这是最好的。
var obj={"test":"teser", confs:["fdf","dfg"]};
var url=encodeURIComponent(JSON.stringify(obj));
现在url="%7B%22test%22%3A%22teser%22%2C%22confs%22%3A%5B%22fdf%22%2C%22dfg%22%5D%7D"
如果你做JSON.parse(decodeURIComponent(url))
,你会得到原始对象。对于数组也是如此。
对于生成查询参数,我使用以下命令:
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('');
}, '');
};
确保传递给parse方法的是字符串:
JSON.parse('STRINGIFIED OBJECT') //Takes a string
你不能JSON.parse([anArray]);
这时你可以用点表示法访问数组的第一个索引:
var myarray = JSON.parse('[{"id":"3","course_category":"Dancing & Fitness"},{"id":"2","course_category":"Fighting"}]');
myarray[0].id //Outputs 3
myarray[1].id //Outputs 2
相关文章:
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- document.title函数可以't设置它与php一起工作
- "此网站似乎使用滚动链接定位效果.这可能不能很好地与异步平移一起工作;
- 非常简单的js测试;Don’不要和Minko一起工作
- 无法使我的文本参数与我的查询一起工作
- 为什么Angularjs验证don't与输入[type=“number”]一起工作
- 无法使vash 0.8.0与express 4.12.3一起工作
- 如何使Angular JS控制器与指令一起工作
- 无法使autocompletion与bootstrap和php代码点火器一起工作
- 注入的元素和jQuery脚本.如何让他们一起工作
- 两个独立工作的javascript函数,但不能一起工作
- 角度和砖石一起工作
- Node http-proxy-middleware 不能与本地服务器一起工作
- jQuery脚本不想一起工作
- page.js使examples/hash与hashbang:true一起工作
- javascript使jquery倒计时与UTC时间一起工作
- jQuery.not()选择器无法与类一起工作
- Rails3-可排序列表不能与wysihtml5一起工作
- 替换匹配函数给出了未定义的错误,但它与替换一起工作
- 按钮上的数据加载消息无法与ajax调用一起工作