<?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[[框架用到]PHP里判断是否由于Ajax请求]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Mon, 28 Jan 2013 08:46:41 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	先说前端使用 jQuery 时怎么区分：<br/><br/>　　jQuery 发出 ajax 请求时，会在请求头部添加一个名为 X-Requested-With 的信息，信息内容为：XMLHttpRequest<br/><br/>　　在后端可以使用 $_SERVER[&quot;HTTP_X_REQUESTED_WITH&quot;] 来获取。（注意：中划线换成了下划线，不区分大小写）<br/><br/>　　由此，我们可以这样来判断是否为 ajax 请求：<br/><textarea name="code" class="php" rows="15" cols="100">
// php 判断是否为 ajax 请求 
if(isset($_SERVER[&quot;HTTP_X_REQUESTED_WITH&quot;]) &amp;&amp; strtolower($_SERVER[&quot;HTTP_X_REQUESTED_WITH&quot;])==&quot;xmlhttprequest&quot;)&#123; 
&nbsp;&nbsp;&nbsp;&nbsp;// ajax 请求的处理方式 
&#125;else&#123; 
&nbsp;&nbsp;&nbsp;&nbsp;// 正常请求的处理方式 
&#125;;
</textarea><br/><br/>写成函数：<br/><textarea name="code" class="php" rows="15" cols="100">
&nbsp;&nbsp;&nbsp;&nbsp;public function isAjax()
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return ($this-&gt;getServer(&#039;HTTP_X_REQUESTED_WITH&#039;) == &#039;XMLHttpRequest&#039;);
&nbsp;&nbsp;&nbsp;&nbsp;&#125;
</textarea><br/><br/>在使用原生 JavaScript 发出 ajax 请求时，我们也可以给头部添加信息，以方便后端同学进行区分，方法如下：<br/><textarea name="code" class="JS" rows="15" cols="100">
var xmlhttp=new XMLHttpRequest(); 
xmlhttp.open(&quot;GET&quot;,&quot;test.php&quot;,true); 
xmlhttp.setRequestHeader(&quot;X-Requested-With&quot;,&quot;XMLHttpRequest&quot;); 
xmlhttp.send();
</textarea><br/><br/><br/>这里我们也一样是给头部添加 X_REQUESTED_WITH 信息，与 jQuery 的一致。当然你也可以更改为别的信息来进行区分。<br/><br/><br/><br/>　　OK，进行区分之后有什么好处呢？说两个例子：<br/><br/>　　1.当 js 文件未加载完时，用户点击了某个按钮或链接，本应是 ajax 请求的成了 正常请求，后端根据判断，不输出 ajax 时的 json 数据，而是跳转，这也是优雅降级的形式。<br/><br/>　　2. [A 页面]使用 ajax 方式进行登录，[B 页面]使用正常方式登录，如果不区分，后端需要写两次几乎完全相同的代码，而有了区分，可以把重复的代码消掉。<br/><br/>来源：http://copier.blog.163.com/blog/static/220101002012111241827156/
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [框架用到]PHP里判断是否由于Ajax请求]]></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>