`

[转]通过 PHP 和 Sajax 使用 Ajax (一)

 
阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

通过 PHP 和 Sajax 使用 Ajax (一)

简单 Ajax 工具包如何把服务器端 PHP 与 JavaScript 集成

Tyler Anderson , 自由作者, Stexar 公司
2006 年 05 月 11 日

多年以来,创建真正具有响应性的 Web 应用程序这一目标一直被 Web 开发的一个简单事实所阻碍:要改变页面某一部分的信息,用户就必须重载整个页面。但是以后不再会这样了。感谢异步 Java™ 脚本和 XML(Ajax),我们现在可以从服务器端请求新内容,只修改页面的一部分。这个教程解释了如何把 Ajax 用于 PHP ,并介绍了简单 Ajax 工具包(Sajax),这是一个用 PHP 编写的工具,可以把服务器端 PHP 与 JavaScript 集成。

开始之前

这份教程针对的是对于开发富 Web 应用程序感兴趣的人,富 Web 应用程序把异步 JavaScript 和 XML(Ajax)与 PHP 结合起来,用户每次点击时,不必刷新整个页面,就可以动态更新内容。这份教程假设读者了解基本的 PHP 概念,包括 ifswitch 语句以及函数的使用。

关于本教程

在本教程中,将学习 Ajax 以及围绕它的应用的问题。将用 PHP 构建一个 Ajax 应用程序,显示以前写的一个教程中的面板。点击面板链接只会重新载入内容区,并用选定面板的内容替换它,从而节约了带宽和页面装入的时间。然后将把简单 Ajax 工具包(Sajax)集成进 Ajax 应用程序,它可以同步 Ajax 的使用,从而简化开发。

概述

在深入之前,先看看 Ajax、示例 PHP 应用程序和 Sajax。

Ajax

Ajax 允许 Web 开发人员创建交互的 Web 页面,同时避免必须等候页面载入这一瓶颈。通过 Ajax 创建的应用程序,只需点击按钮,就可以用全新的内容替换 Web 页面某一区域的内容。它的精彩之处在于不必等候页面装入,只有这一个区域的内容需要载入。以 Google Maps 为例:可以点击和四处移动地图,却不必等候页面载入。

Ajax 的问题

在使用 Ajax 时有些事需要注意。像其他 Web 页面一样,Ajax 页面是可以加书签的,所以在使用 GETPOST 进行请求时就会造成问题。国际化和编码方案数量的增加,使得把这些编码方案标准化变得日益重要。在这份教程中将了解这些重要的问题。

示例 PHP 应用程序

首先要用 Ajax 创建一个应用程序,然后用 Sajax 创建,以展现使用这个工具包的好处。应用程序是以前编写的教程中的一部分,带有面板链接。它被用作示例,以展示使用 Ajax 的优势。因为在各个面板上点击时,它们会异步装入,而不必等候页面剩下的部分再次装入。这个示例应用程序还会展示如何创建自己的 Ajax 应用程序。

Sajax

如果想创建 Ajax 应用程序,又不想受 Ajax 复杂的细节所累。答案就是 Sajax。通过使用 ModernMethod 人员开发的库,Sajax 为 Web 开发人员抽象出了 Ajax 的高层细节。在底层,Sajax 的工作与 Ajax 相同。但是,通过使用 Sajax 库提供的高层函数,可以忽略 Ajax 的技术细节。

什么是 Ajax?

这一节是个入门介绍,用示例解释 Ajax 的概念,包括在点击链接时发生了什么,Ajax 用于 PHP 应用程序时需要的 HTML 和 JavaScript 代码。下一节将更深入一些,实际地使用在这一节学习的 Ajax 概念创建 PHP 应用程序。

幕后内容

Ajax 是异步 JavaScript 和 XML 的组合。之所以说异步,是因为可以点击页面上的链接,然后它只装入与点击对应的内容,同时保持标题或其他任何设定的信息不动。

点击链接时,在背后工作的是 JavaScript 函数。JavaScript 创建与 Web 浏览器通信的对象,并告诉浏览器装入特定页面。然后可以像平常一样浏览同一页面上的其他内容,当浏览器完全装入新页面的时候,浏览器会在 HTML 的 div 标记指定的位置显示内容。

CSS 样式代码用来和 span 标记一起创建链接。

CSS 样式代码

示例应用程序需要 CSS 代码,这样 span 标记看起来就像使用常规的锚标记()创建的真正链接一样,也会像真正的链接一样被点击。


清单 1. 指定 span 标记的显示信息

					...<style type="text/css">  span:visited{ text-decoration:none; color:#293d6b; }  span:hover{ text-decoration:underline; color:#293d6b; }  span {color:#293d6b; cursor: pointer}</style>

这些 span 标记用在示例应用程序中,颜色符合所有 IBM developerWorks 教程中链接使用的颜色。样式标记的第一行指定已经访问过的链接的颜色保持不变。鼠标经过时加下划线,光标变成指针,就像普通的锚标记()一样。现在来看看如何创建使用这个 CSS 样式代码的链接。

创建使用 span 标记的链接

在“构建 PHP 应用程序”一节中要创建的链接,将用来通过 JavaScript 与浏览器通信,告诉浏览器要去什么地方,要提取什么内容。它们不是使用锚标记的传统链接,而是使用 span 标记创建的。span 标记的观感由清单 1 的 CSS 代码决定。这里是示例:

Managing content

onclick 处理程序指定这个 span 被点击时要运行哪个脚本。还有其他几个与 onclick 类似的指示符可以使用,包括 onmouseoverondblclick。请注意在 onclick 字段中显示的是 JavaScript 函数 loadHTML ,而不是传统的 http:// 链接或由清单 panels-ajax.php? 创建的相对链接。接下来学习 loadHTML 函数。

XMLHttpRequest 对象

如果正在使用 Mozilla、Opera 或其他这类浏览器中的一个,那么可以使用内置的 XMLHttpRequest 对象动态地取得内容。Microsoft 的 Internet Explorer 浏览器采用另外一个对象,稍后将会学到。它们使用的方式实际上相同,而且对它们提供支持,只是添加几行额外代码的问题。

XMLHttpRequest 对象用来通过 JavaScript 检索页面内容。稍后在示例应用程序中会使用这个代码,同 ActiveXObjectloadHTML 函数一起使用。请参阅清单 2 了解用法。


清单 2. 初始化和使用 XMLHttpRequest 对象

					...<style><script type="text/javascript">var request;var dest;function loadHTML(URL, destination){    dest = destination;    if(window.XMLHttpRequest){        request = new XMLHttpRequest();        request.onreadystatechange = processStateChange;        request.open("GET", URL, true);        request.send(null);    }}</script>...</font></code></pre>            </td>        </tr>    </tbody></table><br /></p><p>在清单 2 中作为参数传递的 <code>destination</code> 变量指出 <code>XMLHttpRequest</code> 对象要去装入内容的地方,由 <code><div id="content"></div></code> 标记指定。然后代码会检查 <code>XMLHttpRequest</code> 对象是否存在,如果存在,就创建一个新的。然后,事件处理程序被设置为 <code>processStateChange</code> 函数,这个函数是对象在每次状态变化时都会调用的函数。请求剩下的部分就是用 <code>open</code> 方法进行设置,设置传输类型为 <code>GET</code>,并设置对象要装入的 URL。最后调用对象的 <code>send</code> 方法,让对象实际发挥作用。</p><p></p><p><a name="N10227"><span class="smalltitle"><strong><font color="#993300" size="3">ActiveXObject </font></strong></span></a></p><p>在 Internet Explorer 中,用 <code>ActiveXObject</code> 代替 <code>XMLHttpRequest</code>。它的函数与 <code>XMLHttpRequest</code> 的函数相同,甚至函数名都是一样的,如清单 3 所示。</p><p><br /><a name="N10244"><strong>清单 3. 初始化和使用 ActiveXObject </strong></a><br /><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">    <tbody>        <tr>            <td>            <pre><code class="section"><font face="Lucida Console">					...function loadHTML(URL, destination){    dest = destination;    if(window.XMLHttpRequest){...    } else if (window.ActiveXObject) {        request = new ActiveXObject("Microsoft.XMLHTTP");        if (request) {            request.onreadystatechange = processStateChange;            request.open("GET", URL, true);            request.send();        }    }}</script></font></code></pre>            </td>        </tr>    </tbody></table><br /></p><p>在这种情况下(使用 Internet Explorer),实例化一个 <code>Microsoft.XMLHTTP 类型</code> 的新 <code>ActiveXObject</code> 对象。然后,设置事件处理程序,调用对象的 <code>open</code> 函数。然后调用对象的 <code>send</code> 函数,这样 <code>ActiveXObject</code> 就工作了。</p><p></p><p><a name="N10265"><span class="smalltitle"><strong><font color="#993300" size="3">processStateChange 函数</font></strong></span></a></p><p>这里描述的函数叫作事件处理程序或回调函数。回调函数的目的是当对象状态发生变化时,能够处理状态变化。在具体的应用中,这个函数的目的应当是处理状态变化、检验对象是否到达预期状态、读取动态装入的内容。</p><p><code>processStateChange</code> 函数由 <code>XMLHttpRequest</code> 或 <code>ActiveXObject</code> 对象在对象状态发生变化时调用。当对象进入状态 4 时,表明页面的内容已经接收完成(请参阅清单 4)。</p><p><br /><a name="N10285"><strong>清单 4. 处理状态变化</strong></a><br /><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">    <tbody>        <tr>            <td>            <pre><code class="section"><font face="Lucida Console">					...var dest;function processStateChange(){    if (request.readyState == 4){        contentDiv = document.getElementById(dest);        if (request.status == 200){            response = request.responseText;            contentDiv.innerHTML = response;http://httpd.apache.org/download.cgi        }    }}function loadHTML(URL, destination){...</font></code></pre>            </td>        </tr>    </tbody></table><br /></p><p>当 XML HTTP 对象到达状态 4 时,内容就已经就绪,可以提取并在浏览器的预期位置上显示。位置是 <code>contentDiv</code>,内容从文档中检索。如果请求是正确的,而且也按正确的顺序检索,那么响应的状态应当是 200。HTML 响应保存在 <code>request.responseText</code> 中,把它设置到 <code>contentDiv.innerHTML</code>,就可以在浏览器中显示它。</p><p>如果在传输过程中没有发生错误,一切正常,那么新内容就会在浏览器中出现;否则,<code>request.status</code> 就不等于 200。请参阅清单 5 了解错误处理代码。</p><p><br /><a name="N102A5"><strong>清单 5. 错误处理</strong></a><br /><table cellspacing="0" cellpadding="5" width="100%" bgcolor="#eeeeee" border="1">    <tbody>        <tr>            <td>            <pre><code class="section"><font face="Lucida Console">					...        if (request.status == 200){            response = request.responseText;            contentDiv.innerHTML = response;        } else {            contentDiv.innerHTML = "Error: Status "+request.status;        }...</font></code></pre>            </td>        </tr>    </tbody></table><br /></p><p>清单 5 会把有关传输错误的信息发送给浏览器。在示例应用程序中将把这个函数用作回调函数。接下来,学习 <code>GET</code> 和 <code>POST</code> 的问题和它们的差异。</p><p></p><p><a name="N102B6"><span class="smalltitle"><strong><font size="3"><font color="#993300">GET 与 POST</font> </font></strong></span></a></p><p><code>GET</code> 和 <code>POST</code> 是进行 HTTP 请求和在请求中传递变量的两种方法。开发人员不应当随意选择使用哪种方法,因为两种方法都有使用意义。<code>GET</code> 请求把变量嵌在 URL 中,这意味着它们是可以加书签的。如果变量可能会修改数据库、购买商品或者做其他类似操作,这种方法会有副作用。假设偶然间加了书签的页面有一个购买商品的 URL ,里面包含地址、信用卡号以及 $100 的产品,全都嵌在 URL 中,那么重新访问这个 URL 就意味着购买这件商品。</p><p>所以,只有在变量没有副作用,可以经常重新载入也不会发生什么的时候,才可以进行 <code>GET</code> 请求。适合 <code>GET</code> 请求的一个变量可能是分类 ID。可以反复重新载入,分类会反复显示,但是没有任何累积的效果。</p><p>在另一方面,当变量对源(例如数据库)有作用时或者为了个人信息安全,应当采用 <code>POST</code> 请求。比如在购买一件 $100 的产品时,应当用 <code>POST</code> 请求。如果给付款页面加了书签,由于 URL 中没有变量,所以什么也不会发生,也不会意外地购买了不想购买的东西,或者在已经拥有的情况下又买了一次。</p><p><code>GET</code> 和 <code>POST</code> 的意义在 Ajax 中有同样的作用。在构建本文的应用程序和未来的应用程序时,理解 <code>GET</code> 和 <code>POST</code> 请求的差异是很重要的。这会有助于避免 Web 应用程序开发的常见缺陷。</p><p></p><p><a name="N102FC"><span class="smalltitle"><strong><font color="#993300" size="3">编码方法</font></strong></span></a></p><p>对于通过 HTTP 传输的数据进行编码,有多种方法,而 XML 只接受其中少数几种。互操作性最大的一种编码方法是 UTF-8,因为它向后兼容美国信息交换标准码(ASCII)。有许多在其他国家使用的国际字符的编码方式不向后兼容 ASCII ,如果不进行恰当的编码,就不适合放在 XML 文件中。</p><p>例如,把字符串 ”Internationalization” 放在浏览器中,用 UTF-8 编码的话,会把它变成 I%F1t%EBrn%E2ti%F4n%E0liz%E6ti%F8n。经典 ASCII 字符的 UTF-8 编码与相同字符的 7 位 ASCII 码对应,这使 UTF-8 是一个理想的编码方法选择。</p><p>了解这一点是很重要的,因为在通过 HTTP 传输和接收文档的过程中都要处理编码问题,在使用 Ajax 时也是一样。使用 Ajax 进行传输时,也应当使用 UTF-8 编码,因为标准化可以提高互操作性。</p><p></p><p><strong>说明:</strong><br />本文来自:<a href="http://www.ibm.com/developerworks/cn/views/opensource/tutorials.jsp?cv_doc_id=109065">http://www.ibm.com/developerworks/cn/views/opensource/tutorials.jsp?cv_doc_id=109065</a><br />版权归属IBM所有,本Blog只是处于转载学习更多技术目的</p><p></p><br><br>		<br>	</div>
</div>
<div class="share_buttons" id="sharePanel"></div>

<div class="article_next_prev">
        <li class="prev_article">
            <span>上一篇:</span><a href="http://blog.csdn.net/liguiyuan/article/details/2276873"> 技术英雄会【二】:问CSDN一个信息过滤器的问题</a></li>
        <li class="next_article">
            <span>下一篇:</span><a href="http://blog.csdn.net/liguiyuan/article/details/2276905"> 技术英雄会【新闻】CSDN最有价值博客TOP10颁奖【图】【我在左边数第四个】</a></li>
</div>


</div>
<div id="ad_cen"></div>
<script type="text/javascript">
    new Ad(4, 'ad_cen');
</script>
<div id="comment_title" class="panel_head">查看评论<a name="comments"></a></div>
<div id="comment_list"></div>
<div id="comment_bar"></div>
<div id="comment_form"></div>
<div class="announce">* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场<a name="reply"></a><a name="quote"></a></div>
<script type="text/javascript">
    var fileName = '2276896';
    var commentscount = 0;
    var islock = false
</script>
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/comment.js"></script>
<div id="ad_bot"></div>
<script type="text/javascript">
    new Ad(5, 'ad_bot');
</script>
<div id="report_dialog"></div>



<div class="clear"></div>
</div>
</div>
<div id="side">
    <div class="side">
<div id="panel_Profile" class="panel">
    <ul class="panel_head"><span>个人资料</span></ul>
    <ul class="panel_body profile">
        <div id="blog_userface">
            <a href="/liguiyuan" title="我的博客主页">
            <img src="http://avatar.csdn.net/5/5/9/1_liguiyuan.jpg"  style="max-width:90%"/>
            </a>
            <br />
            <span>liguiyuan</span>
        </div>
        <div id="blog_medal">
        </div>
        <ul id="blog_rank">
            <li>访问:<span>68533次</span></li>
            <li>积分:<span>21680分</span></li>
            <li>排名:<span>第44名</span></li>
        </ul>
        <ul id="blog_statistics">
            <li>原创:<span>2143篇</span></li>
            <li>转载:<span>0篇</span></li>
            <li>译文:<span>0篇</span></li>
            <li>评论:<span>5条</span></li>
        </ul>
    </ul>
</div><div class="panel" id="panel_Search">
    <ul class="panel_head"><span>文章搜索</span></ul>
    <ul class="panel_body">
        <form id="frmSearch" action="http://so.csdn.net/search" class="form_search" target="_blank">
        <span><input id="inputSearch" type="text" class="blogsearch" title="请输入关键字" /></span>
        <input id="btnSubmit" type="submit" value="搜索" title="search in blog" />
        <input type="hidden" name="q" id="inputQ" />
        <input type="hidden" name="t" value="blog" />
        <a id="btnSearchBlog" target="_blank"></a>
        </form>
    </ul>
</div><div id="panel_Archive" class="panel">
    <ul class="panel_head"><span>文章存档</span></ul>
    <ul class="panel_body">
        <div id="archive_list">
        <!--归档统计-->
        <li><a href="http://blog.csdn.net/liguiyuan/article/month/2008/04">2008年04月</a>(1139)</li><li><a href="http://blog.csdn.net/liguiyuan/article/month/2008/03">2008年03月</a>(3)</li><li><a href="http://blog.csdn.net/liguiyuan/article/month/2007/12">2007年12月</a>(946)</li><li><a href="http://blog.csdn.net/liguiyuan/article/month/2007/10">2007年10月</a>(55)</li>
        </div>
    </ul>
</div>
<div id="hotarticls" class="panel">
    <ul class="panel_head"><span>阅读排行</span></ul>
    <ul class="panel_body">
        <li>
            <a href="/liguiyuan/article/details/2276729" title=" 介绍国产的PHP MVC框架:FleaPHP"> 介绍国产的PHP MVC框架:Flea...</a> (1221)
        </li>
        <li>
            <a href="/liguiyuan/article/details/2276599" title=" [转]B+树的结构和实现代码"> [转]B+树的结构和实现代码</a> (944)
        </li>
        <li>
            <a href="/liguiyuan/article/details/2276764" title=" [转]PHP在RS232串口通讯协议的应用演示[测试环境WinXP/PHP5.1.4]"> [转]PHP在RS232串口通讯协议的...</a> (906)
        </li>
        <li>
            <a href="/liguiyuan/article/details/2276784" title=" 判断远程文件是否存在的php函数"> 判断远程文件是否存在的php函数</a> (696)
        </li>
        <li>
            <a href="/liguiyuan/article/details/2276761" title=" [推荐] 干掉垃圾流氓插件得批处理文件和注册表文件"> [推荐] 干掉垃圾流氓插件得批处理文件...</a> (639)
        </li>
        <li>
            <a href="/liguiyuan/article/details/1950937" title=" 走在技术和商业之间的平衡木上(感想英雄会)"> 走在技术和商业之间的平衡木上(感想英雄...</a> (502)
        </li>
        <li>
            <a href="/liguiyuan/article/details/2287036" title=" NetBeans6.0中的用户界面设计"> NetBeans6.0中的用户界面设计</a> (460)
        </li>
        <li>
            <a href="/liguiyuan/article/details/1962071" title=" LaTeX 写作的两个辅助工具:统计中文字数和关闭Acrobat中的PDF文档"> LaTeX 写作的两个辅助工具:统计中...</a> (457)
        </li>
        <li>
            <a href="/liguiyuan/article/details/2276743" title=" [介绍]PHP设计模式:DAO(数据访问对象模式)"> [介绍]PHP设计模式:DAO(数据访...</a> (444)
        </li>
        <li>
            <a href="/liguiyuan/article/details/2276754" title=" [转]MySQL查询优化技术讲座"> [转]MySQL查询优化技术讲座</a> (397)
        </li>
    </ul>
</div>
<div id="hotarticls" class="panel">
    <ul class="panel_head"><span>评论排行</span></ul>
    <ul class="panel_body">
        <li>
            <a href="/liguiyuan/article/details/1960612" title=" IBM 经典销售面试题:营销理念的终极挑战"> IBM 经典销售面试题:营销理念的终极...</a> (1)
        </li>
        <li>
            <a href="/liguiyuan/article/details/1996864" title=" 线程的优先级"> 线程的优先级</a> (1)
        </li>
        <li>
            <a href="/liguiyuan/article/details/2268236" title=" 如何用摄像头来测距(opencv) - xylary专栏 - CSDNBlog"> 如何用摄像头来测距(opencv) -...</a> (1)
        </li>
        <li>
            <a href="/liguiyuan/article/details/2276783" title=" [转]基本应用层的TCP/IP协议介绍 (HTTP/FTP/POP/SMTP)"> [转]基本应用层的TCP/IP协议介绍...</a> (1)
        </li>
        <li>
            <a href="/liguiyuan/article/details/2279344" title=" java SWT嵌入IE,SafeArray"> java SWT嵌入IE,SafeAr...</a> (1)
        </li>
        <li>
            <a href="/liguiyuan/article/details/1851734" title=" 《COM技术内幕》FAQ"> 《COM技术内幕》FAQ</a> (0)
        </li>
        <li>
            <a href="/liguiyuan/article/details/1851735" title=" 写在周日的凌晨( 一次思维的对话)"> 写在周日的凌晨( 一次思维的对话)</a> (0)
        </li>
        <li>
            <a href="/liguiyuan/article/details/1851737" title=" Put it into a Context!(写作中)"> Put it into a Conte...</a> (0)
        </li>
        <li>
            <a href="/liguiyuan/article/details/1851738" title=" [领域]当Party就是PartyRole会这样"> [领域]当Party就是PartyRo...</a> (0)
        </li>
        <li>
            <a href="/liguiyuan/article/details/1851739" title=" [领域]Party/PartyRole/Classification及其它..."> [领域]Party/PartyRole...</a> (0)
        </li>
    </ul>
</div>
<div id="homepageArticles" class="panel">
    <ul class="panel_head"><span>推荐文章</span></ul>
    <ul class="panel_body" id="ad_commend">
    </ul>
</div>
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/ad.js"></script>
<script type="text/javascript">
    new Ad(12, 'ad_commend');
</script><div id="newcomments" class="panel">
<ul class="panel_head"><span>最新评论</span></ul>
<ul class="panel_body">
    <li>
    <a href="/liguiyuan/article/details/2268236#comments"> 如何用摄像头来测距(opencv) - xylary专栏 - CSDNBlog</a>
    <p style="margin:0px;">zzhzcl15:
fuck
    </p>
    </li>
    <li>
    <a href="/liguiyuan/article/details/2279344#comments"> java SWT嵌入IE,SafeArray</a>
    <p style="margin:0px;">oschina3:
牛叉啊
    </p>
    </li>
    <li>
    <a href="/liguiyuan/article/details/1960612#comments"> IBM 经典销售面试题:营销理念的终极挑战</a>
    <p style="margin:0px;">匿名用户:
1101?
    </p>
    </li>
    <li>
    <a href="/liguiyuan/article/details/1996864#comments"> 线程的优先级</a>
    <p style="margin:0px;">匿名用户:
mpg123我用VS2005编译有个问题:Visual Studio 8/VC/PlatformSD...
    </p>
    </li>
    <li>
    <a href="/liguiyuan/article/details/2276783#comments"> [转]基本应用层的TCP/IP协议介绍 (HTTP/FTP/POP/SMTP)</a>
    <p style="margin:0px;">匿名用户:

    </p>
    </li>
</ul>
</div>
    </div>
    <div class="clear">
    </div>
</div>

<div class="clear"></div>
</div>
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/SyntaxHighlighter/shCore-src.js"></script>
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.js"></script>
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/article_code.js"></script>

<script type="text/javascript" src="http://medal.blog.csdn.net/scripts/show.js"></script>
<script type="text/javascript" src="http://medal.blog.csdn.net/showblogmedal.ashx?blogid=254641"></script>
<script type="text/javascript">document.write("<img src=http://counter.csdn.net/pv.aspx?id=24 border=0 width=0 height=0>");</script>
<script type="text/javascript" src="http://www.csdn.net/ui/scripts/Csdn/counter.js"></script>
<script type="text/javascript" src="http://csdnimg.cn/pubfooter/js/publib_footer.js"></script>


</div>
</body>
</html></style>
分享到:
评论

相关推荐

    通过PHP和Sajax使用Ajax之JavaScript

    在本教程中,将学习 Ajax 以及围绕它的应用的问题。将用 PHP 构建一个 Ajax 应用程序,显示以前写的一个教程中的...然后将把简单 Ajax 工具包(Sajax)集成进 Ajax 应用程序,它可以同步 Ajax 的使用,从而简化开发。

    Ajax基础教程(扫描版)

    本书重点介绍ajax及相关的工具和技术,主要内容包括xmlhttprequest对象及其属性和方法、发送请求和处理响应、构建完备的ajax开发工具、使用jsunit测试javascript、分析javascript调试工具和技术,以及ajax开发模式和...

    PHP结合AJAX开发实例

    本文中我们将完全使用 PHP 和 Simple Ajax Toolkit (Sajax) 创建一个简单的相册作为在线 Web 应用程序。我们首先用标准的 PHP 开发方法编写简单的相册,然后再用 Sajax 将其变成活动的 Web 应用程序。

    结合AJAX进行PHP开发之入门

    本文将使用两种方法创建一个简单的相册:传统的 Web 应用程序和基于 Sajax 的应用程序。我们将用 PHP 编写一个相册,读取某一目录中的内容,显示缩略图组成的表格。如果用户单击一个缩略图,就会完全展开该图像。...

    自己整理的一个JS函数库 AJAX dom隐藏显示 数据整理 只有12KB 压缩后5kb

    自己整理的一个JS函数库 AJAX dom隐藏显示 数据整理 只有12KB 压缩后5kb 使用方法 引入文件 然后就可以直接使用了 具体函数方法如下 /* $(id) 根据元素id返回对象 N(name, i) 根据元素name返回对象,可能会有多个...

    结合Ajax进行PHP开发,第1部分:入门一个简单的相册

    “结合Ajax进行PHP开发”这个系列包括两部分,我们将完全使用PHP和SimpleAjaxToolkit(Sajax)创建一个简单的相册作为在线Web应用程序。我们首先用标准的PHP开发方法编写简单的相册,然后再用Sajax将其变成活动的Web...

    PHP ajax framework

    PHP环境下的Ajax框架大全,经典值得收藏! cpaint_v2.1.0 HTML_AJAX-0.4.1&lt;br&gt;sajax-0.12&lt;br&gt;xajax_0.2.5&lt;br&gt;xoad-0.6.0.0-php5

    结合Ajax进行PHP开发1:入门

    本文将使用两种方法创建一个简单的相册:传统的Web 应用程序和基于Sajax的应用程序。我们将用PHP编写一个相册,读取某一目录中的内容,显示缩略图组成的表格。如果用户单击一个缩略图,就会完全展开该图像。因为编写...

    结合Ajax进行PHP开发,第2部分:后退、前进和刷新

    “结合Ajax进行PHP开发”系列包括两部分,第1部分创建了Ajax相册应用程序,这一部分我们将使用JavaScript为其建立一个历史堆栈(historystack)。这个堆栈以Web浏览器中的历史记录工具为蓝本,为该应用程序提供后退...

    基于jquery ajax 用户无刷新登录方法详解

    Ajax框架就是提供模块化实现Ajax功能的集合,Ajax框架可以是各种语言实现的(比如SAJAX有各种语言的实现),Ajax只是jquery中的一部分, 实例1 代码如下: $.ajax({ type:’post’,//可选get url:’action.php’,//...

    php ajax 实现

    In this archive you will find a folder for each platform that is currently supported. Please see individual documentation in each folder for specific errata.

    Flexible AJAX-开源

    flxAJAX(Flexible AJAX)是PHP中AJAX技术的实现。 它是用php5-oop编写的,并允许从javascript调用已定义的php函数,类似于'sajax'中的实现,但基于oop且更灵活。

Global site tag (gtag.js) - Google Analytics