8 6 js第九 十天 ajax 交互

nodejs 是一个可以让js作为服务端的平台    属于js的一种

mvc     model 模型(数据)  view   视图(模板)  controller 控制器

通过访问一个地址(controller) ,然后去跟后端调对应数据,然后把对应的数据(model)渲染到视图(view),最终展现给用户 ,这种思想叫做MVC思想(模式)

静态文件访问  :

静态页面  html页面

动态页面  数据可变  和后端有交互的页面  叫做动态页面  访问控制器来输出的

终于讲到ajax了   

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

XML 数据格式

异步 可以同时进行,节约成本事件  排队的例子

XMLHttpRequest  这个对象(构造函数)可以实现前端和后端的数据交互 

app.get('/news',function(req,res,next){
    res.json({
        code:1,
        data:[{
            id:1,
            title:'第一条新闻'
        },{
            id:2,
            title:'第二条新闻'
        },{
            id:3,
            title:'第三条新闻'
        },{
            id:4,
            title:'第四条新闻'
        }]
    },)
})
app.listen(8080,function(){
    console.log('服务已经开启 端口是8080')
})
<script>
        var xhr =new XMLHttpRequest();
        xhr.open('get','/news',false);
        xhr.onreadystatechange=function(){
            if(xhr.readyState==4 && xhr.status==200)
            {
                var result = JSON.parse(xhr.responseText);
                var oList = document.getElementById('list');
                if(result.code== 1)
                {
                    var str = '';
                    oList.innerHTML = str;
                    for(var i=0;i<result.data.length;i++)
                    {   
                        str+='<li>'+result.data[i].title+'</li>';
                    }
                }
                else
                {
                    str+='请求数据错误';
                }   
                    oList.innerHTML = str;
            }
        }
        xhr.send(null)
    </script>

9.26填坑   关于readystate和status 为啥都要用   原因    https://www.cnblogs.com/teroy/p/3917439.html

 

 报错少favicon   解决方法   在head下加   <link rel="shortcut icon" href="#" />

静态资源  :直接访问的文件 (页面 图片  css  js文件)

动态页面:通过控制器来访问的 随着后台数据变化而变化

路由(控制器)

JSON   XML它们都是一种数据格式

 二者对比  json文件要小   容易读取 维护方便 

json格式 1 {“name”:"zhangsan"}   (前要有双引号  后面是字符串也要加双引号)  {“age”:23}

 

JSON.stringify  转化为JSON的字符串

 

JSON.parse   parse是解析的意思  转换成JSON对象
字符串转化  对于JSON格式很严格  字符串的key值和value值必须得带有双引号才能转化  没有的话也是没法转换

转换不了就用   eval()这个

同源策略:浏览器做的一个安全机制   解释:相同的源头的一种方案 

http://www.baidu.com:80

协议     域名     端口

源头:指的是这个域名之下 (域)

同源 (满足三点): 协议+域名+端口  全部相同

http://www.baidu.com/dir  是同源

https://www.baidu.com  不是同源  

对 a标签    img标签   iframe标签  都没限制  

对 ajax有限制 

域:

    子域:http://news.baidu.com

    父域:http://www.baidu.com        [子域和父域之间也属于跨域]

主域名:http://www.baidu.com

二级域名:http://news.baidu.com

三级域名:http://abc.news.baidu.com

 

跨域:

     子域跨域:document.domain='baidu.com'

      外域跨域:

解决跨域的方案:

1 cors(后端【服务端 通过设置请求头 设置允许的域  设置允许的请求方式  等等 )

例如:

res.header("Access-Control-Allow-Origin","*")

2.jsonp跨域 

利用script标签可以跨域  这一特性 在 其后面添加一个回调函数 自己设定一个回调函数接受结果 

主要是使用jq的ajax  自己封装的我没看  没时间了

 

 

cookie  曲奇饼   document自带的 默认值是空字符串

cookie  客户端存储用户的信息 【要有后台服务支持】

cookie可设置多个键值对  documen.cookie='name=rain'   设置多个写多次 不能连写    而且键值对中间是=

cookie可以设置过期时间  documen.cookie='name=rain expires'

设置域  documen.cookie='name=rain expires domian'

设置某路径下支持cookie     documen.cookie='name=rain path'

封装cookie插件也没看

 

session  服务端和客户端之间的连接  通过往cookie里面写入sessionid

session:1 往内存中存放一个sessionid

   2 往cookie里面写入一个sessionid

3 这两个sessionid是同一个,通过判断cookie里面的和内存中的是否是一样的 来判断是不是一个用户

cookie和session之间的区别

1 cookie是客户端的东西  session是服务端的

2 cookie可以被篡改 很不安全 session不能被篡改 所以考虑安全session靠谱

3.cookie存储有限制大小不能超过4kb  ,一个站点最多保存20个cookie   session多的话造成服务器卡顿 (放在缓存或者服务器中 文件中等)

4.cookie存活的周期,手动设置时间节点 expires   session会在一定时间内保存在服务端  一般是关闭页面session就失效了

面试题  两个页面之间通信传值 

1.通过获取参数

2 cookie

3 localStroage

4.sessionStroage

本地缓存  localstroage   文件大小没有限制 value 字符串类型   周期:如果不手动删除永远存在  

ie8以上兼容

setItem(key,value) 

getItem(key)

remove(key)

clear()

sessionStroage  结束一个会话就会消失  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值