<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[Ajax中get与post请求详解]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sun, 12 Jun 2011 02:55:30 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	 学习ajax技术的时候,很多同学对于ajax中get与post请求总是疑问不解,为了给学员解决疑问,现将授课中对get与post的请求的总结发表于学生大本营中,希望能给你带来帮助.&nbsp;&nbsp;<br/><br/>一、get()和post()基本区别<br/>1.get是把参数数据队列加到提交表单的ACTION属性所指的URL中，值和表单内各个字段一一对应，在URL中可以看到。post是通过HTTP post机制，将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。<br/>2.对于get方式，服务器端用Request.QueryString获取变量的值，对于post方式，服务器端用Request.Form获取提交的数据。两种方式的参数都可以用Request来获得。<br/>3.get传送的数据量较小，不能大于2KB。post传送的数据量较大，一般被默认为不受限制。但理论上，因服务器的不同而异。<br/>4.get安全性非常低，post安全性较高。<br/>5.&lt;form method=&quot;get&quot; action=&quot;a.asp?b=b&quot;&gt;跟&lt;form method=&quot;get&quot; action=&quot;a.asp&quot;&gt;是一样的，也就是说，method为get时action页面后边带的参数列表会被忽视；而&lt;form method=&quot;post&quot; action=&quot;a.asp?b=b&quot;&gt;跟&lt;form method=&quot;post&quot; action=&quot;a.asp&quot;&gt;是不一样的。<br/>二、谈Ajax的Get和Post的区别<br/>&nbsp;&nbsp; 1.Get方式<br/>&nbsp;&nbsp; 用get方式可传送简单数据，但大小一般限制在1KB下，数据追加到url中发送（http的header传送），也就是说，浏览器将各个表单字段元素及其数据按照URL参数的格式附加在请求行中的资源路径后面。另外最重要的一点是，它会被客户端的浏览器缓存起来，那么，别人就可以从浏览器的历史记录中，读取到此客户的数据，比如帐号和密码等。因此，在某些情况下，get方法会带来严重的安全性问题。<br/>Ajax发送请求:如果是get请求send(参数)参数：必须是null或xhr.send();<br/>&nbsp;&nbsp;&nbsp;&nbsp;get请求就不必要设置 xhr.setRequestHeader(header,value)<br/>备注：如果xhr.send(参数);参数不为空情况下,在某些浏览器中会自动转换成post请求方式 您可以通过request.getMethod();方法获取请求的方式<br/>实例：<br/> getAjax()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; //获取xhr对象<br/>&nbsp;&nbsp;&nbsp;&nbsp; var xhr = getXhr();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//规定请求类型&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; xhr.open(&quot;get&quot;,&quot;main.jsp?username=123&quot;,true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //发送请求<br/>&nbsp;&nbsp;&nbsp;&nbsp; xhr.send();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //处理服务器响应事件<br/>&nbsp;&nbsp;&nbsp;&nbsp; xhr.onreadystatechange =&nbsp;&nbsp;()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//判读是否处理完毕 与判读服务器是否处理成功！<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(xhr.readyState==4 &amp;&amp; xhr.status==200)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(xhr.responseText);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/>使用get方式需要注意<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)对于get请求（或凡涉及到url传递参数的），被传递的参数都要先经(预编码处理)encodeURIComponent方法处理.例：var url = &quot;update.php?username=&quot; +encodeURIComponent(username) + &quot;&amp;content=&quot; +encodeURIComponent(content)+&quot;&amp;id=1&quot; ;<br/> <br/>2.Post方式:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当使用POST方式时，浏览器把各表单字段元素及其数据作为HTTP消息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的实体内容发送给Web服务器，而不是作为URL地址的参数进行传递，使用 POST方式传递的数据量要比使用GET方式传送的数据量大的多<br/>发送请求:如果是post请求send(参数)参数：参数可以是null或者<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xhr.send()&#124;send(带有参数的)post请求在传递值的情况下必须设置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xhr.setRequestHeader(header,value)<br/>实例：<br/>postAjax()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; //获取xhr对象<br/>&nbsp;&nbsp;&nbsp;&nbsp; var xhr = getXhr();<br/>&nbsp;&nbsp;&nbsp;&nbsp; //规定请求类型&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; xhr.open(&quot;post&quot;,&quot;main.jsp&quot;,true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xhr.setRequestHeader(&quot;Content-Type&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;application/x-www-form-urlencoded&quot;)<br/> //发送参数<br/> xhr.send(&quot;username=345&amp;pass=123&quot;);<br/>//相应事件处理<br/>&nbsp;&nbsp;&nbsp;&nbsp; xhr.onreadystatechange =&nbsp;&nbsp;()&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //判读是否处理完毕 与判读服务器是否处理成功！<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(xhr.readyState==4 &amp;&amp; xhr.status==200)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(xhr.responseText);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/>使用Post方式需注意：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1).设置header的Context-Type为application/x-www-form-<br/>&nbsp;&nbsp; urlencode确保服务器知道实体中有参数变量.通常使用XmlHttpRequest对象的<br/>&nbsp;&nbsp; SetRequestHeader(&quot;Context-Type&quot;,&quot;application/x-www-form-urlencoded;&quot;)。例：<br/>&nbsp;&nbsp; xhr.setRequestHeader(&quot;Content-Type&quot;,&quot;application/x-www-form-urlencoded&quot;)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2).参数是名/值一一对应的键值对,每对值用&amp;号隔开.如 var name=abc&amp;sex=man<br/>&nbsp;&nbsp; &amp;age=18 注意var name=update.php?abc&amp;sex=man&amp;age=18以及var name=?abc&amp;sex=man<br/>&nbsp;&nbsp; &amp;age=18的写法都是错误的;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3).参数在Send(参数)方法中发送,例： xhr.send(name); 如果是 get 方&nbsp;&nbsp;&nbsp;&nbsp;式，直接 xmlHttp.send(null);<br/>(4).服务器端请求参数区分Get与Post。如果是get方式则$username =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $_GET[&quot;username&quot;]; 如果是post方式，则$username =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$_POST[&quot;username&quot;];<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp; 总之，GET方式传送数据量小，处理效率高，安全性低，会被缓存，而POST反之。<br/><br/>readyState一共有五个状态 <br/>0 未连接 <br/>1 打开连接<br/>2 发送请求<br/>3 交互<br/>4 完成交互，接手响应 <br/>不同的状态你可以有不同的操作
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] Ajax中get与post请求详解]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>