只按一个=获取url参数key,value 'a=a1&b=
1、使用split分割会把所有=都分割成数组;所以通过split('&') 分割后,每一个字符串的第一个=前后就是key,value,所以重点是使用indexOf去找到第一个=;
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);
}
// =分割后的字符串内还有=导致分割失败,解决办法:&分割后,每次都只找第一个=前后分割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()转一下
$.ajax({
type: "POST",
url: url,
contentType: 'application/json',
dataType: "JSON",
data: postData, // ajax的json格式传参必须是jsonstring,浏览器请求后台接口获取参数才是json类型
success: function (data) {},
error: function (data) {}
});