Cᴏʀ*_*ᴏʀʏ 2 jquery json query-string
对于此示例,假设我在表单中有一个月份列表,每个月份旁边都有一个复选框.我正在寻找两件事情中的任何一个的帮助:
"January=on&March=on&September=on"
)或[{ January: 'on' },{ March: 'on' },{ September: 'on' }]
到一个JSON对象: { January: 'on', March: 'on', September: 'on' }
我意识到第一个映射已经是JSON,但是我希望它不是对象数组,而是一个JSON对象.我可以用它构建地图,$('form').serializeArray();
我可以用它构建查询字符串$('form').serialize();
.
jQuery API中.serialize()的实现很简单:
serialize: function() {
return jQuery.param(this.serializeArray());
},
Run Code Online (Sandbox Code Playgroud)
这就是我可以处理第一个或第二个答案的原因.
我想这样做的原因是因为我从PrototypeJS切换到jQuery,而在PrototypeJS中,这很简单:
Object.toJSON(Form.serializeElements($('myform'), true));
Run Code Online (Sandbox Code Playgroud)
那么,有没有人知道一个JSON插件(我想坚持使用只有jQuery)可以轻松地做到这一点,或者知道一个简单的方法来实现我正在寻找的结果?谢谢!
Rah*_*gan 10
你可以试试这个
String.prototype.QueryStringToJSON = function () {
href = this;
qStr = href.replace(/(.*?\?)/, '');
qArr = qStr.split('&');
stack = {};
for (var i in qArr) {
var a = qArr[i].split('=');
var name = a[0],
value = isNaN(a[1]) ? a[1] : parseFloat(a[1]);
if (name.match(/(.*?)\[(.*?)]/)) {
name = RegExp.$1;
name2 = RegExp.$2;
//alert(RegExp.$2)
if (name2) {
if (!(name in stack)) {
stack[name] = {};
}
stack[name][name2] = value;
} else {
if (!(name in stack)) {
stack[name] = [];
}
stack[name].push(value);
}
} else {
stack[name] = value;
}
}
return stack;
}
Run Code Online (Sandbox Code Playgroud)
请求参数
href="j.html?name=nayan&age=29&salary=20000&interest[]=php&interest[]=jquery&interest[1]=python&interest[2]=Csharp&fan[friend]=rangan&fan[family]=sujan&sports[1]=cricket&sports[2]=football";
Run Code Online (Sandbox Code Playgroud)
用法
alert(href.QueryStringToJSON().toSource())
Run Code Online (Sandbox Code Playgroud)
产量
({name:"nayan", age:29, salary:20000, interest:["php", "python", "Csharp"], fan:{friend:"rangan", family:"sujan"}, sports:{1:"cricket", 2:"football"}})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21171 次 |
最近记录: |