代码之家  ›  专栏  ›  技术社区  ›  RamAlx

从javascript中的url创建post主体

  •  -1
  • RamAlx  · 技术社区  · 6 年前

    假设我有一个带有如下参数的url:

    allowedCardTypes=master%2Cvisa&callbackUrl=https%3A%2F%2Fstage.masterpassteststore.com%2Fteststorefront%2F%3Fsdk%3Djava%23%2Fcallback%2Fcheckout%3Freload%3Dtrue&merchantCheckoutId=f5d29dd838bd4e97a280a9e2a00d9f63
    

    我想创建和对象如下:

    {
      allowedCardTypes: master%2Cvisa,
      callbackUrl: https%3A%2F%2Fstage.masterpassteststore.com%2Fteststorefront%2F%3Fsdk%3Djava%23%2Fcallback%2Fcheckout%3Freload%3Dtrue
    
    }
    

    有什么想法吗?js有这个功能吗?

    2 回复  |  直到 6 年前
        1
  •  2
  •   mplungjan    6 年前

    对。 https://developer.mozilla.org/en-US/docs/Web/API/URL

    这个解决方案实际上会为您创建更好的字符串(引号和非转义)

    let parms = {"allowedCardTypes":"","callbackUrl":""}
    const searchParams = "allowedCardTypes=master%2Cvisa&callbackUrl=https%3A%2F%2Fstage.masterpassteststore.com%2Fteststorefront%2F%3Fsdk%3Djava%23%2Fcallback%2Fcheckout%3Freload%3Dtrue&merchantCheckoutId=f5d29dd838bd4e97a280a9e2a00d9f63"
    const url = new URL("http://test.com?"+searchParams);
    for (let parm in parms) {
      parms[parm] = url.searchParams.get(parm);
    }
    console.log(parms);
        2
  •  0
  •   Ethan Ryan    6 年前

    由于URL是字符串,因此可以将其设置为变量,对其执行一些基本的字符串操作,然后将其保存为对象中的键值对:

    var url = "allowedCardTypes=master%2Cvisa&callbackUrl=https%3A%2F%2Fstage.masterpassteststore.com%2Fteststorefront%2F%3Fsdk%3Djava%23%2Fcallback%2Fcheckout%3Freload%3Dtrue&merchantCheckoutId=f5d29dd838bd4e97a280a9e2a00d9f63"
    
    var array = url.split("&callbackUrl=")
    //console.log('array is: ', array)
    
    var allowedCarTypesValue = array[0].split("allowedCardTypes=")
    //console.log('allowedCarTypesValue: ', allowedCarTypesValue)
    
    var obj = {
      allowedCardTypes: allowedCarTypesValue[1],
      callbackUrl: array[1]
    };
    
    console.log('obj is: ', obj)