zoukankan      html  css  js  c++  java
  • Ajax和Jsonp的工作原理,以及区别

    Ajax工作原理是:
    相当于在用户和服务器之间加了—个中间层(AJAX引擎),使用户操作与服务器响应异步化。
    对于用户请求ajax引擎会做一些数据验证和数据处理,不是所有请求都提交给服务器,当需要从服务器读取新数据时由Ajax引擎代为向服务器提交请求。AJAX最大优点就是不刷新整个页面的前提下与服务器通信维护数据。
    过程的话
    第一步:创建一个ajax引擎对象,ie6的是new ActiveXObject其他浏览器是new一个xmlHttpRequest对象
    第二步 调用open方法启动一个请求以备发送,open方法传入三个参数 请求类型,请求url和一个布尔值
    第三步 调用send方法发送
    第四部 处理回调函数onreadystatechange,当readState = 4 响应数据完成时 并且2status=200请求成功的时候处理响应数据
    注意:回调函数要写在open()和send()之前
    Jsonp原理:
    动态创建一个script标签,利用script标签src属性访问没有限制,实现跨域。
    web客户端通过与调用脚本一样的方式来调用跨域服务器上动态生成的js格式文件(后缀.json),服务器之所以要动态生成json文件目的把客户端需要的数据装入进去。
    允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住json数据 这样客户端就可以随意定制自己的函数来自动处理返回数据
    Ajax jsonp的区别:
    1.ajaxjsonp的调用方式很像,目的一样,都是请求url,然后把服务器返回的数据进行处理,因此jqueryext等框架都把jsonp作为ajax的一种形式进行了封装;
    2.实质不同
     ajax的核心是通过xmlHttpRequest获取非本页内容
     jsonp的核心是动态添加script标签调用服务器提供的js脚本(后缀.json)
    3.区别联系
     不在于是否跨域
     ajax通过服务端代理一样跨域
     jsonp也不并不排斥同域的数据的获取
    4.jsonp是一种方式或者说非强制性的协议
     ajax也不一定非要用json格式来传递数据 
    5.jsonp只支持get请求,ajax支持getpost请求
  • 相关阅读:
    Fidder4 顶部提示 “The system proxy was changed,click to reenable fiddler capture”。
    redis 哨兵 sentinel master slave 连接建立过程
    虚拟点赞浏览功能的大数据量测试
    python基础练习题(题目 字母识词)
    python基础练习题(题目 回文数)
    python基础练习题(题目 递归求等差数列)
    python基础练习题(题目 递归输出)
    python基础练习题(题目 递归求阶乘)
    python基础练习题(题目 阶乘求和)
    python基础练习题(题目 斐波那契数列II)
  • 原文地址:https://www.cnblogs.com/Ari1c/p/7878360.html
Copyright © 2011-2022 走看看