zoukankan      html  css  js  c++  java
  • Ajax请求的原理 get和post方法和get,post请求方式的区别

    Ajax请求的原理

    1.原理:在Ajax请求中,html页面的中操作将通过Ajax引擎与服务器端进行通讯,然后将返回的结果提交到客户端页面的Ajax引擎,再由Ajax引擎来决定将服务器端返回数据插入到页面的指定位置。从而实现无需刷新页面的http请求。

    2.Ajax请求的优点

     a.最大的优点是,无需刷新就可更新页面

     b.可以把原先服务器端负担的工作的转移客户端,利用客户端的闲置资源进行处理,减轻服务器和带宽的负担,节约空间和成本

     c.Ajax没有平台限制。Ajax把服务器由原先的传送内容转变为传输数据,而数据格式可以为纯文本和XML格式,这两种格式没有平台限制。

     d.可以调用Xml等外部数据,进一步促进页面的显示和数据的分离

    3.Ajax使用的技术

     a.XMLHttpRequest对象

     b.XML

     c.JavaScript

     d.Css

     e.DOM

    4.Ajax请求时性能的优化

     a.尽量使用局部变量,不要使用全局变量

     b.优化for循环

     c.尽量少使用eval,每次使用eval都会浪费大量时间

     d.将DOM节点附加到文档上

     e.尽量减少使用点“.”号操作符的使用

     

    方法get()和post()基本区别:

    HTTP 请求:GET vs. POST

    两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST。

    · GET - 从指定的资源请求数据

    POST - 向指定的资源提交要处理的数据

    GET 基本上用于从服务器获得(取回)数据。注释:GET 方法可能返回缓存数据。

    POST 也可用于从服务器获取数据。不过,POST 方法不会缓存数据,并且常用于连同请求一起发送数据。

    1.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

    2.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。

    3.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,因服务器的不同而异。

    4.get安全性非常低,post安全性较高。

    5.<form method="get" action="a.asp?b=b">跟<form method="get" action="a.asp">是一样的,也就是说,method为get时action页面后边带的参数列表会被忽视;而<form method="post" action="a.asp?b=b">跟<form method="post" action="a.asp">是不一样的。

    JQeury的3种实现方式

    1. $.ajax( ) 语法:$.ajax({键值对});

    2.  $.get():发送get请求语法:$.get(url, [data], [callback], [type])

    url:请求路径

    Data:请求参数,即 发送的数据  {key:value}形式 ,

    Callback:成功时的回调函数 function(result){}  result 后台返回的数据  ,

    Type响应结果的类型: 返回的数据类型  默认为 text ,可以设为 json text

    3. $.post():发送post请求 :* 语法:$.post(url, [data], [callback], [type])

    通过jQuery发送ajax请求,在代码和使用上谈谈post和get的区别:

    jQuery get() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据。 

    代码区别

    1. get 方式 发送请求 语法: $.get(url,data,callback,type);

     url:请求路径

    Data:请求参数,即 发送的数据  {key:value}形式 ,

    Callback:成功时的回调函数 function(result){}  result 后台返回的数据  ,

    Type响应结果的类型 返回的数据类型  默认为 text ,可以设为 json text

    2. post 方式 发送请求 语法: $.post(url,data,callback,type);

    $.get()方法: 使用GET方式执行Ajax请求,从服务器加载数据。形式:$.get(url, data, func, dataType)

    $.post()方法:使用POST方式执行Ajax请求,从服务器加载数据。形式:$.post(url, data, func, dataType);

    可选参数:

    1)url:链接地址,字符串表示

    2)data:需要发送到服务器的数据,格式为{A: '...', B: '...'}

    3)func:请求成功后,服务器回调的函数;function(data, status, xhr),其中data为服务器回传的数据,status为响应状态,xhr为XMLHttpRequest

    4)dataType:服务器返回数据的格式

     

    2.Ajax的Get和Post的使用区别:

    总结

    1)GET方式 传送数据量小,安全性低,会被缓存,处理效率高,而post是将参数放在请求的表单体内

    2)在向服务器传参数时,get是将参数直接添加到url后面;post是将参数放在请求的表单体内

    3)当请求无副作用时(如进行搜索),便可用GET方法;当请求有副作用时(如添加数据行),则用POST方法。post适合大量数据(不受url长度限制)和需要安全的数据传输(传输的数据不会在url上出现) 

    使用post发送请求注意设置,post默认发送方式是application/x-www-form-urlencoded这个就是content-type请求头类型,如果不指定可能请求会失败application/x-ww

    get请求和post请求在服务器端的区别:

     在客户端使用get请求时,服务器端使用Request.QueryString来获取参数,

    而客户端使用post请求时,服务器端使用Request.Form来获取参数. 

       1.Get方式
       用get方式可传送简单数据,但大小一般限制在1KB下,数据追加到url中发送(http的header传送),也就是说,浏览器将各个表单字段元素及其数据按照URL参数的格式附加在请求行中的资源路径后面。另外最重要的一点是,它会被客户端的浏览器缓存起来,那么,别人就可以从浏览器的历史记录中,读取到此客户的数据,比如帐号和密码等。因此,在某些情况下,get方法会带来严重的安全性问题。

    总结:GET请求方式:URL传值的方式进行请求,一般大小限制在1KB(最多只能是1024字节)以下,这个数据会被浏览器缓存起来,所以账号密码用户ID肯定是不能这样传递(暴露不安全)

    Ajax发送请求:如果是get请求send(参数)参数:必须是null或xhr.send();

        get请求就不必要设置 xhr.setRequestHeader(header,value)

    备注:如果xhr.send(参数);参数不为空情况下,在某些浏览器中会自动转换成post请求方式 您可以通过request.getMethod();方法获取请求的方式

    使用get方式需要注意
                (1)对于get请求(或凡涉及到url传递参数的),被传递的参数都要先经(预编码处理)encodeURIComponent方法处理.

    例:var url = "update.php?username=" +encodeURIComponent(username) + "&content=" +encodeURIComponent(content)+"&id=1" ;

    2.Post方式:
             当使用POST方式时,浏览器把各表单字段元素及其数据作为HTTP消息      的实体内容发送给Web服务器,而不是作为URL地址的参数进行传递,使用  POST方式传递的数据量要比使用GET方式传送的数据量大的多

    总结:POST请求方式:一般用于发送表单(input这样的form表单)数据,安全性比get高,数据量也大而且不会被浏览器缓存

    发送请求:如果是post请求send(参数)参数:参数可以是null或者xhr.send()|send(带有参数的)post请求在传递值的情况下必须 设置          xhr.setRequestHeader(header,value)

    应用场景
    总结:

    1)当请求无副作用时(如进行搜索),便可使用get方法当请求有副作用时(如添加数据行),则用POST方法

    2)如果调用是要检索服务器上的数据则使用GET。如果要检索的值会随时间和更新进程的改变而改变则要在GET调用中添加一个当前时间参数,这样后面的调用才不会使用先前的不正确的缓冲。

       如果调用是向服务器发送任意数据,就可以使用POSTPOST用于创建资源,资源的内容会被编入HTTP请示的内容中。例如,处理订货表单、在数据库中加入新数据行等。


    GET方法应用场景
    * 请求是为了查找资源,HTML表单数据仅用来帮助搜索。
    * 请求结果无持续性的副作用。
    * 收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符。

    GET 请求的其他一些注释:

    · GET 请求可被缓存

    · GET 请求保留在浏览器历史记录中

    · GET 请求可被收藏为书签

    · GET 请求不应在处理敏感数据时使用

    · GET 请求有长度限制

    · GET 请求只应当用于取回数据

    POST方法应用场景
    * 请求的结果有持续性的副作用,例如,数据库内添加新的数据行。
    * 若使用GET方法,则表单上收集的数据可能让URL过长。
    * 要传送的数据不是采用7位的ASCII编码。

    POST 请求的其他一些注释:

    · POST 请求不会被缓存

    · POST 请求不会保留在浏览器历史记录中

    · POST 不能被收藏为书签

    · POST 请求对数据长度没有要求

  • 相关阅读:
    java中volatile关键字的含义
    2019年个人总结
    跟随Javac代码来解答字节码的疑惑
    Python装饰器实现带参数和不带参数
    try with resource当中你没有注意到点。。
    IDEA中,已经被加到版本库的文件如何在提交的时候忽略它们
    连接mysql客户端报错: java.sql.SQLException: Unable to load authentication plugin 'caching_sha2_password'
    从字节码层次看i++和++i
    对lambda表达式的字节码实现个人理解
    解决mvn clean install的报错The packaging for this project did not assign a file to the build artifact
  • 原文地址:https://www.cnblogs.com/2549372994jing/p/10531942.html
Copyright © 2011-2022 走看看