1、使用split分割會(huì)把所有=都分割成數(shù)組批钠;所以通過split('&') 分割后见妒,每一個(gè)字符串的第一個(gè)=前后就是key,value,所以重點(diǎn)是使用indexOf去找到第一個(gè)=蔬顾;
let str = 'a=a1&b=b1=b2==b3&c=c1===c2=c3';
function makeup(paramsLink) {
? let arr = paramsLink.split('&');
? let obj = new Object();
? for (let i = 0; i < arr.length; i ++ ) {
? ? if(getKeyValue(arr[i]).length > 1) {
? ? ? obj[getKeyValue(arr[i])[0]] = getKeyValue(arr[i])[1];
? ? }
}
? return JSON.stringify(obj);
}
// =分割后的字符串內(nèi)還有=導(dǎo)致分割失敗露氮,解決辦法:&分割后,每次都只找第一個(gè)=前后分割indexOf
// 'a=a1&b=b1==&c=c1==='
// getKeyValue('a=a1&b=b1==&c=c1===')? ? {a: "a1", b: "b1==", c: "c1==="}
function getKeyValue(string) {
? let kstr, vstr;
? let idx = string.indexOf('=');
? if(idx >= 0) {
? ? kstr = string.substr(0, idx);
? ? vstr = string.substr(idx + 1);
? ? return [kstr, vstr];
? }else {
? ? return [];
? }
}
2含长、getKeyValue方法里的代碼可以用nodejs里的querystring方法
var querystring = require('querystring');
var str = 'foo=bar&abc=xyz&abc=123';
console.log(querystring.parse(str));//'{ foo: 'bar', abc: [ 'xyz', '123' ] }'
3券腔、好久不用jquery了,post指定傳參json類型拘泞,data需要是JSON.string()轉(zhuǎn)一下
$.ajax({
? type: "POST",
? url: url,
? contentType: 'application/json',
? dataType: "JSON",
? data: postData, // ajax的json格式傳參必須是jsonstring,瀏覽器請(qǐng)求后臺(tái)接口獲取參數(shù)才是json類型
? success: function (data) {},
? error: function (data) {}
});