成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js 地址的封裝以及地址欄的參數(shù)獲取

firim / 3126人閱讀

摘要:例如傳入字符串,數(shù)組,返回索引傳入對象,返回對象的好了了解了下面我們就可以進行地址與對象的拼接了地址與對象拼接的代碼地址的參數(shù)取值代碼第一種方法傳統(tǒng)字符串轉(zhuǎn)對象第二種方法正則調(diào)用方法

有時候我們封裝一個ajax的get的方法需要把對象拼接到地址上面,這里我介紹一個Object.keys,這是一個非常好用對象屬性。
例如說

const url = "http://127.0.0.1:4000";
const params = {
    name: "testname",
    email: "[email protected]"
}
// 這里我們需要得到的一個是
http://127.0.0.1:[email protected]

還有就是 從url的的某個參數(shù)獲取對應(yīng)的值,例如

http://127.0.0.1:[email protected]
GetQueryString("name") // testname
先介紹一下Object.keys

Object.keys()返回一個數(shù)組的元素是字符串對應(yīng)可列舉的發(fā)現(xiàn)直接在對象屬性。屬性的順序是一樣的,由手動循環(huán)在對象的屬性。
例如

// 傳入字符串,數(shù)組,返回索引
var arr = ["a", "b", "c"];
console.log(Object.keys(arr)); // console: ["0", "1", "2"]

// 傳入對象,返回對象的key
var obj = { 0: "a", 1: "b", 2: "c" };
console.log(Object.keys(obj)); // console: ["0", "1", "2"]

var an_obj = { 100: "a", 2: "b", 7: "c" };
console.log(Object.keys(an_obj)); // console: ["2", "7", "100"]

// getFoo is property which isn"t enumerable
var my_obj = Object.create({}, { getFoo: { value: function() { return this.foo; } } });
my_obj.foo = 1;

console.log(Object.keys(my_obj)); // console: ["foo"]

好了 了解了Object.keys(),下面我們就可以進行地址與對象的拼接了

地址與對象拼接的代碼
const server = "hettp://123.123.123.123:2000";
const testParams = {
    "name": "nameyese",
    "password": "passwords"
}
function toUrl(url, params){
    let paramsArr = [];
    if (params) {
        Object.keys(params).forEach(item => {
            paramsArr.push(item + "=" + params[item]);
        })
        if (url.search(/?/) === -1) {
            url += "?" + paramsArr.join("&");
        } else {
            url += "&" + paramsArr.join("&");
        }

    }
    console.log(url);
    // hettp://123.123.123.123:2000?name=nameyese&password=passwords
}
地址的參數(shù)取值代碼
第一種方法(傳統(tǒng))
// 字符串轉(zhuǎn)對象
var tstr = "http://www.abc.com/detail?code=1&start=2017-02-01&end=2017-02-14&name=abc";    
function GetQueryString(name) {
    let index = tstr.indexOf("?")
    let str = tstr.substring(index + 1);
    let arr = str.split("&");
    let result = {};
    arr.forEach((item) => {
        let a = item.split("=");
        result[a[0]] = a[1];
    })
    return result[name];
}

console.log(GetQueryString("start")) // 2017-02-01
第二種方法(正則)
function GetQueryString(name)
{
     let reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
     let r = window.location.search.substr(1).match(reg);
     if(r!=null)return  unescape(r[2]); return null;
}
 
// 調(diào)用方法
alert(GetQueryString("start")); // 2017-02-01

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/86761.html

相關(guān)文章

  • react-router v4.x 源碼拾遺1

    摘要:還是先來一段官方的基礎(chǔ)使用案例,熟悉一下整體的代碼流程中使用了端常用到的等一些常用組件,作為的頂層組件來獲取的和設(shè)置回調(diào)函數(shù)來更新。 react-router是react官方推薦并參與維護的一個路由庫,支持瀏覽器端、app端、服務(wù)端等常見場景下的路由切換功能,react-router本身不具備切換和跳轉(zhuǎn)路由的功能,這些功能全部由react-router依賴的history庫完成,his...

    itvincent 評論0 收藏0
  • react-router v4.x 源碼拾遺1

    摘要:還是先來一段官方的基礎(chǔ)使用案例,熟悉一下整體的代碼流程中使用了端常用到的等一些常用組件,作為的頂層組件來獲取的和設(shè)置回調(diào)函數(shù)來更新。 react-router是react官方推薦并參與維護的一個路由庫,支持瀏覽器端、app端、服務(wù)端等常見場景下的路由切換功能,react-router本身不具備切換和跳轉(zhuǎn)路由的功能,這些功能全部由react-router依賴的history庫完成,his...

    Joyven 評論0 收藏0
  • react-router v4.x 源碼拾遺2

    摘要:如果將添加到當前組件,并且當前組件由包裹,那么將引用最外層包裝組件的實例而并非我們期望的當前組件,這也是在實際開發(fā)中為什么不推薦使用的原因,使用一個回調(diào)函數(shù)是一個不錯的選擇,也同樣的使用的是回調(diào)函數(shù)來實現(xiàn)的。 回顧:上一篇講了BrowserRouter 和 Router之前的關(guān)系,以及Router實現(xiàn)路由跳轉(zhuǎn)切換的原理。這一篇來簡短介紹react-router剩余組件的源碼,結(jié)合官方文...

    luoyibu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<