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()基本区别:
两种在客户端和服务器端进行请求-响应的常用方法是: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调用中添加一个当前时间参数,这样后面的调用才不会使用先前的不正确的缓冲。
如果调用是向服务器发送任意数据,就可以使用POST。POST用于创建资源,资源的内容会被编入HTTP请示的内容中。例如,处理订货表单、在数据库中加入新数据行等。
GET方法应用场景:
* 请求是为了查找资源,HTML表单数据仅用来帮助搜索。
* 请求结果无持续性的副作用。
* 收集的数据及HTML表单内的输入字段名称的总长不超过1024个字符。
GET 请求的其他一些注释:
· GET 请求可被缓存
· GET 请求保留在浏览器历史记录中
· GET 请求可被收藏为书签
· GET 请求不应在处理敏感数据时使用
· GET 请求有长度限制
· GET 请求只应当用于取回数据
POST方法应用场景:
* 请求的结果有持续性的副作用,例如,数据库内添加新的数据行。
* 若使用GET方法,则表单上收集的数据可能让URL过长。
* 要传送的数据不是采用7位的ASCII编码。
POST 请求的其他一些注释:
· POST 请求不会被缓存
· POST 请求不会保留在浏览器历史记录中
· POST 不能被收藏为书签
· POST 请求对数据长度没有要求
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。