前端小乐趣

只按一个=获取url参数key,value 'a=a1&b=

2023-04-19  本文已影响0人  MAYDAY77

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) {}

});

上一篇 下一篇

猜你喜欢

热点阅读