我如何可以改變一個查詢字符串像var1=5&var2=stackoverflow&var3=blah
以JSON對象像從查詢字符串,以JSON在JavaScript
{
"var1": "5",
"var2": "stackoverflow",
"var3": "blah"
}
我下面this,但看起來像我錯過了一些東西......我也可以使用jQuery,如果需要的話。
我如何可以改變一個查詢字符串像var1=5&var2=stackoverflow&var3=blah
以JSON對象像從查詢字符串,以JSON在JavaScript
{
"var1": "5",
"var2": "stackoverflow",
"var3": "blah"
}
我下面this,但看起來像我錯過了一些東西......我也可以使用jQuery,如果需要的話。
我做一個手動解決解析對象本身...
AjaxForm.prototype.getData = function() {
var data = this.$element.serializeArray();
var object = {};
for (var i = 0; i < data.length; i++) {
object[data[i].name] = data[i].value;
}
return JSON.stringify(object);
};
你可以創建一個小提琴來演示這個工作嗎?我不明白你在做什麼 - 你如何解析查詢字符串? – scniro
您可以按照this:
$(function(){
// Values are not coerced.
var params = $.deparam.querystring();
debug.log('not coerced', params);
$('#deparam_string').text(JSON.stringify(params, null, 2));
// Values are coerced.
params = $.deparam.querystring(true);
debug.log('coerced', params);
$('#deparam_coerced').text(JSON.stringify(params, null, 2));
// Highlight the current sample query string link
var qs = $.param.querystring();
$('li a').each(function(){
if ($(this).attr('href') === '?' + qs) {
$(this).addClass('current');
}
});
});
不知道在這一點上,你與中提到的教程中掙扎,因爲你沒有提供你的片段,但檢查文章的時候,我能夠充分手藝爲你工作的例子(在評論中有一些改進建議)。遵守以下...
function QueryStringToJSON(str) {
var pairs = str.split('&');
var result = {};
pairs.forEach(function (pair) {
pair = pair.split('=');
var name = pair[0]
var value = pair[1]
if (name.length)
if (result[name] !== undefined) {
if (!result[name].push) {
result[name] = [result[name]];
}
result[name].push(value || '');
} else {
result[name] = value || '';
}
});
return (result);
}
var string = 'var1=5&var2=stackoverflow&var3=blah';
var obj = QueryStringToJSON(string);
console.log(obj) // {var1: "5", var2: "stackoverflow", var3: "blah"}
JSFiddle Link - 工作演示
網絡將指向你jQuery BBQ: $.deparam
如在某一點的方法來此上搜索周圍。這是偉大的,可能有點更強大的,但你應該能夠逃脫上面的代碼中第一個,特別是如果你想要一個香草的解決方案(你總是應該!)
你可以修改最後一行爲'return(JSON.stringify(result));'這會給出完美的JSON字符串。現在它返回一個Object將不會在console.log()中打印。 – Amrit
你可以這樣做。
var query="var1=5&var2=stackoverflow&var3=blah";
var arr=query.split("&");
result={};
for(i=0;i<arr.length;i++) {
k = arr[i].split('=');
result[k[0]] = (k[1] || '');
};
console.log(result);
所以在這裏我在做什麼使用 「&」 1)拆分查詢。你會得到數組爲[「var1 = 5」,....];
2)數組的每個元素再一次分裂超過 「=」。
3)取密鑰作爲改編[0]和值作爲改編[1],如果沒有值,則「」。
注:這是decodeed URI。如果URI被編碼,首先使用decodeURIComponent()函數對其進行解碼。
似乎究竟是如何將教程代碼不適合你的工作? – IceFire
看起來像它的返回一個數組裏面的對象,但我只需要 – Napolux
你有沒有解決這個問題的對象?我的建議能夠幫助你嗎? – scniro