queryString参数

一、commonjs引入模块

默认会添加.js后缀会自动解析.json和.node的文件

1.json 2.node

json是主流的数据传输格式,有特殊规则的字符串

json文件不能用 //注释

二、querystring查询参固定格式的参数

querystring: ?键名=键值&键名=键值&键名=键值;

如:

三、nodejs里如何获取querystring?

通过 req.url获取路径地址;

const http=require("http");// 内置模块
const url=require("url");// node中的内置模块 获取路径地址
const server=http.createServer((req,res)=>{
   // console.log(req.url);  //会在访问服务器的时候显示地址 【会是乱码】
   var obj=  url.parse(req.url,true);  // 是url里的固定方法 ,格式化url的;转成对象
   console.log(obj);
   console.log(obj.query);
   res.write("hello");
   res.end();})
server.listen(8989);

前端获取参数的目的是:

window.location.href 获取地址

window.location.search 地址栏 ?后面的内容

window.location.hash 地址栏 #后面的内容

四、querystring跨页面传参

querystring参数(字符串)转对象

  • a.html

<button>点击按钮跳转到b.html且传参</button>
   <script>
       // 1.点击按钮跳转  2.带数据到b页面
       let btn=document.querySelector("button");
       btn.onclick=function() {
         let obj= {username:"zhangsan",age:20}
           // 通过querystring 来带参数;   【变量用模板字符串更方便】
             // 跳转到b页面并带参数在地址栏中
           window.location.href=`./b.html?username=${obj.username}&age=${obj.age}`;  
        }
   </script>
  • b.html

 // 获取携带过来的参数
       // 接收querystring参数;
       // 查询地址
       let str=window.location.search;
       // console.log(str);
       str=str.substr(1);//删除地址中的?
       console.log(str);
       console.log(s2o(str));  //{username:"zhangsan", age:20 }
       // 把querystring参数转成 对应格式的对象
       function s2o(str){
           let arr=str.split("&");// 把字符串通过&来切割并返回数组
           // console.log(arr);     //[username="zhangsan", age=20]
           let obj= {};  //创建空数组
           arr.forEach(item=>{
               let linearr=item.split("=");// 把每一个 username=zhangsan ,age=20 通过=号切割开
               // console.log(linearr);
               // 把 username age 作为对象的键名    把 zhangsan 、20 作为对象的键值;
               obj[linearr[0]] =linearr[1];
           // console.log(obj);
           // 返还组装好的对象;
           return obj;
     }

五、地址栏的构成

`http://www.baidu.com` ——> `http://www.baidu.com:80/index?name=123`

协议:http 和 https://域名(localhost,127.0.0.1,外网ip地址):端口 80或是443/地址?参数

http://www.baidu.com/index 和http://www.baidu.com/index?name=123 地址是一样,参数有区别

六、对象转querystring参数

 Object.prototype.myname="hello";  // 原型链上添加myname属性
       let obj= {
           name:"张三",
           age:20,
           height:"178cm"
        }
       // obj ------>  name=张三&age=20&height=178cm
       o2s(obj);
       function o2s(obj) {
           // let resStr = "";
           let arr= [];  //通过空数组获得数据,再通过数组方法连接成字符串
           for(let key in obj) {  // 会循环原型链上的内容 ;  for …… in循环对象  也可以循环数组
               // 判断属性是否是对象的自身属性;因为for in循环会循环原型链上的内容
               // 对象.hasOwnProperty(键名); 判断某个键名是否是自身属性;
               if(obj.hasOwnProperty(key)) {
                   // console.log(key,obj[key]); 得到的是 键名  键值
                   let str=`${key}=${obj[key]}`;
                   // console.log(str);
                   // resStr += str + "&";
                   arr.push(str);//尾部添加
                }  }
           let resStr=arr.join("&");
           console.log(resStr);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值