<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>生活点滴 &#187; ajax</title>
	<atom:link href="http://www.storyday.com/tag/ajax/feed" rel="self" type="application/rss+xml" />
	<link>http://www.storyday.com</link>
	<description>生活点滴、旅游、web技术、虚拟主机、电子信息</description>
	<lastBuildDate>Wed, 08 Feb 2012 05:54:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>wordpress和ajax</title>
		<link>http://www.storyday.com/html/y2008/1496_wordpress-ajax.html</link>
		<comments>http://www.storyday.com/html/y2008/1496_wordpress-ajax.html#comments</comments>
		<pubDate>Tue, 15 Apr 2008 02:10:53 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://www.storyday.com/?p=1496</guid>
		<description><![CDATA[很多朋友都认为ajax能提高网页的速度，但是我更喜欢用ajax来提高用户体验和平衡动态页面与静态页面之间的关系。我曾经乱谈过ajax，原因在于有几个朋友认准了一个死理：那就是ajax对改善速度的作用是大大的！而今天的这篇文章中，我想重点谈一谈如何在wordpress系统中使用ajax，也就是如何通过修改模板或者插件在wordpress中灵活的运用ajax。 对了，如果你还不太清楚ajax的基本原理，请自行google之，本站就不再为互联网贡献垃圾了。在实际的操作中，我们运用ajax的方式大部分情况下为异步请求（当然你也可以设置成同步模式），异步请求的好处在于浏览器在载入html的同时，后台也会用js请求数据，所以载入数据的时候感觉不到任何卡页的现象。由于数据的请求是由JS控制，因此你可以将ajax代码嵌入到静态化的wordpress页面中，从而将部分的内容通过ajax做实时的请求，而本文的目的便在于此。 下面举例说明如何运用ajax在静态的首页中实时的请求最新留言（如果你已经使用了 cos-html-cache，这个例子没有必要了，因为 cos-html-cache在有新的留言的时候会自动更新首页）。首先我们想到的应该是如何去产生最新留言这个数据，这里有两种方式，一种是插件，另外一种就是直接修改模板，其实归根结底都一样，所以我们就用插件来举例，按照本人的老规矩，所有的说明均在下面代码中的注释里面体现。 /* Plugin Name: GetLatestComment Plugin URI: http://www.storyday.com Description: use ajax to show comments Version: 1.0 Author: jiangdong date:2007-04-20 Author URI:http://www.storyday.com */ if( !function_exists("cos_get_latest_comments")){ //该函数是获取最新留言，通过查询wp的数据库获取信息，函数命名为cos_主要是防止和别人的插件冲突 function cos_get_latest_comments($no_comments = 5, $before = ' ', $after = ' ', $show_pass_post = false,$trim_num=20) { //no_comments 表示取出留言的数量 //$before $after为显示留言的标签 //$trim_num留言最长字符数 global $wpdb, $tablecomments, $tableposts; $request [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://0bad.com/readimg.php?src=http%3A%2F%2Flh4.gouride.com%2Fchina.cos%2FSAQPsw9M9BI%2FAAAAAAAABLY%2F8UzFOsmjqlo%2Fs288%2Fsongdaofeng.jpg" align="left" alt="松岛枫" />很多朋友都认为ajax能提高网页的速度，但是我更喜欢用ajax来<strong>提高用户体验</strong>和<strong>平衡动态页面与静态页面之间的关系</strong>。我曾经<a href="http://www.storyday.com/html/y2007/695_talk-about-ajax.html" target="_blank">乱谈过ajax</a>，原因在于有几个朋友认准了一个死理：那就是ajax对改善速度的作用是大大的！而今天的这篇文章中，我想重点谈一谈如何在wordpress系统中使用ajax，也就是如何通过修改模板或者插件在wordpress中灵活的运用ajax。</p>
<p>对了，如果你还不太清楚ajax的基本原理，请自行google之，本站就不再为互联网贡献垃圾了。在实际的操作中，我们运用ajax的方式大部分情况下为异步请求（当然你也可以设置成同步模式），异步请求的好处在于浏览器在载入html的同时，后台也会用js请求数据，所以载入数据的时候感觉不到任何卡页的现象。由于数据的请求是由JS控制，因此你可以将ajax代码嵌入到静态化的wordpress页面中，从而将部分的内容通过ajax做实时的请求，而本文的目的便在于此。<span id="more-1496"></span></p>
<p>下面举例说明如何运用ajax在静态的首页中实时的请求最新留言（如果你已经使用了<strong> <a href="http://www.storyday.com/tag/cos-html-cache">cos-html-cache</a></strong>，这个例子没有必要了，因为<strong> <a href="http://www.storyday.com/tag/cos-html-cache">cos-html-cache</a></strong>在有新的留言的时候会自动更新首页）。首先我们想到的应该是如何去产生最新留言这个数据，这里有两种方式，一种是插件，另外一种就是直接修改模板，其实归根结底都一样，所以我们就用插件来举例，按照本人的老规矩，所有的说明均在下面代码中的注释里面体现。<br />
<code>/*<br />
Plugin Name: GetLatestComment<br />
Plugin URI: http://www.storyday.com<br />
Description: use ajax to show comments<br />
Version: 1.0<br />
Author: jiangdong<br />
date:2007-04-20<br />
Author URI:http://www.storyday.com<br />
*/</p>
<p>if( !function_exists("cos_get_latest_comments")){<br />
//该函数是获取最新留言，通过查询wp的数据库获取信息，函数命名为cos_主要是防止和别人的插件冲突<br />
	function cos_get_latest_comments($no_comments = 5, $before = '
<li> ', $after = '</li>
<p>', $show_pass_post = false,$trim_num=20) {<br />
//no_comments 表示取出留言的数量<br />
//$before  $after为显示留言的标签<br />
//$trim_num留言最长字符数</p>
<p>	global $wpdb, $tablecomments, $tableposts;<br />
	$request = "SELECT ID, comment_ID, comment_content, comment_author FROM $tableposts, $tablecomments WHERE $tableposts.ID=$tablecomments.comment_post_ID AND (post_status = 'publish' OR post_status = 'static')";//</p>
<p>	if(!$show_pass_post) { $request .= "AND post_password ='' "; }</p>
<p>    $request .= "AND comment_approved = '1' ORDER BY $tablecomments.comment_date DESC LIMIT $no_comments";<br />
    $comments = $wpdb->get_results($request);<br />
    $output = '';<br />
    foreach ($comments as $comment) {<br />
       $comment_author = stripslashes($comment->comment_author);<br />
       $comment_content = strip_tags($comment->comment_content);<br />
       $comment_content = stripslashes($comment_content);<br />
       $comment_excerpt = utf_substr($comment_content,$trim_num);//utf_substr这个函数是为了截断中文字utf8符串<br />
       $permalink = get_permalink($comment->ID)."#comment-".$comment->comment_ID;<br />
       $output .= $before . '<a href="' . $permalink . '" title="View the entire comment by ' . $comment_author . '">' .$comment_author .  '</a>' . $comment_excerpt . $after;<br />
//这里输出留言<br />
       }<br />
	   $output = "< ?xml  version='1.0' encoding='utf-8'?>
<ul class='latestcomments'>".$output."</ul>
<p>";<br />
	   header( 'Content-type: text/xml;charset=utf-8' );//将留言用xml格式输出，当然有可能不是合法的xml文件，不过这没有关系<br />
       echo $output;<br />
	}<br />
}<br />
//</p>
<p>//show latest comments by index.php?action=storyday.showCommentsList<br />
//下面的函数是将函数挂载到wordpress 初始化的钩子上<br />
if( !function_exists("add_cos_cutom")){<br />
	function add_cos_cutom(){<br />
		if(  'storyday.showCommentsList' == $_GET['action']   ){<br />
//如果get的参数是storyday.showCommentsList即请求是index.php?action=storyday.showCommentsList<br />
//则调用下面的函数，在本例子中，该函数就是显示最新5条留言<br />
//函数调用完毕之后直接终止输出die();<br />
			cos_get_latest_comments($no_comments = 5, $before = '
<li> ', $after = '</li>
<p>', $show_pass_post = false,30);<br />
			die();<br />
		}<br />
	}<br />
}<br />
add_action('init', 'add_cos_cutom');<br />
//将该函数挂载到init钩子上，各位客官，这下访问index.php?action=storyday.showCommentsList<br />
//就可以看到最新留言的数据流<br />
</code><br />
下面是截断字符串的函数，主要用于正常的uft8编码截断，所以没有放在上面一起，如果你的wp插件库中没有这个函数，请添加到上面的代码中。<br />
<code>if( !function_exists("utf_substr")){<br />
	function utf_substr($str,$len){<br />
		if( strlen( $str ) < = $len )<br />
			return $str;<br />
		for($i=0;$i<$len;$i++)<br />
		{<br />
			$temp_str=substr($str,0,1);<br />
			if(ord($temp_str) > 127){<br />
				$i++;<br />
			if($i< $len)    {<br />
				$new_str[]=substr($str,0,3);<br />
				$str=substr($str,3);<br />
				}<br />
			}<br />
		else {<br />
			$new_str[]=substr($str,0,1);<br />
			$str=substr($str,1);<br />
			}<br />
		}</p>
<p>		$new_str = join($new_str);<br />
		$new_str = $new_str."...";<br />
		return $new_str;<br />
	}<br />
}</code></p>
<p>好了，服务器端如何获取留言的插件已经搞定。现在我们就开始考虑如何在客户端处理了。当然，如果你采用了jquery，只需要在模板对应的文件中加上下面的这段代码即可<br />
</code><code>
<div id="latest-comment"></div>
<p><script> 
url = "< ?php echo get_settings('home'); ?>/index.php?action=storyday.showCommentsList";
$(”#latest-commen”).load(url);
</script></code></p>
<p>&#8212;-如果你没有使用jQuery 请看下面的代码 &#8212;&#8212;&#8212;&#8212;-<br />
ajax函数代码<br />
<code><script LANGUAGE="JavaScript">
<!--
var req;
var global_divname;
function loadXMLDoc(url,divnm,is_asc) {
    // branch for native XMLHttpRequest object
	global_divname = divnm;	
	if(document.getElementById(global_divname) == null){
		alert('ERROR:HTML tag not exists!');
		return false;
	}
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, is_asc);
            req.send();
        }
    }
	return true;
}
//////////////////
function processReqChange() {
    // only if req shows "loaded"	
    if (req.readyState == 4) {
      // only if "OK"
        if ( (req.status == 200)&#038;&#038;(global_divname != null) ) {
            // ...processing statements go here...
			document.getElementById(global_divname).innerHTML = req.responseText ;
        } else {			
				alert("数据载入失败");	
	}
    }
}	
//-->
</script></code><br />
利用上面的ajax函数代码获取数据<br />
<code>
<div id="latest-comment"></div>
<p><script> 
url = "< ?php echo get_settings('home'); ?>/index.php?action=storyday.showCommentsList";
loadXMLDoc(url,"latest-comment",true); 
</script></code></p>
<p>不知道我有没有说清楚？如果没有，请留言。当然前提条件是你要基本熟悉wordpress的插件机制，如果你不熟悉，或者上面的那个插件你可以用来作为参考。</p>
<p>俗话说，书中自有颜如玉，没有美女怎么行，管她是不是AV女优松岛枫？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/1496_wordpress-ajax.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>打算用jQuery改写这个模板</title>
		<link>http://www.storyday.com/html/y2008/1425_intended-to-rewrite-the-template-jquery.html</link>
		<comments>http://www.storyday.com/html/y2008/1425_intended-to-rewrite-the-template-jquery.html#comments</comments>
		<pubDate>Wed, 30 Jan 2008 08:43:30 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[HTML客户端]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://www.storyday.com/html/y2008/1425_%e6%89%93%e7%ae%97%e7%94%a8jquery%e6%94%b9%e5%86%99%e8%bf%99%e4%b8%aa%e6%a8%a1%e6%9d%bf.html</guid>
		<description><![CDATA[最近做收费的程序已经做得比较累了，但是由于本人又不喜欢玩游戏，所以打算抽点时间来改版这个blog吧。不过这次不全面改版，没有那个精力了。接受dupola的建议，初步决定装上zhiqiang的ajaxcomment插件，这样就能在留言本无限的回复了，由于这个插件调用了大约7k的js，打算再精简一下，于是乎准备同时也将这个插件改写了！ 考虑到 jQuery的优良特性和瘦弱的体积（gzip之后只有10k左右），所以本站将采用jQuery来驱动，一方面为今后添加新的功能打下基础，另外一个方面也当作实验用，因为下一步的shopex要采用到这个脚本，bloggermap.org也将用jQuery来驱动。既然如此，同时将ajaxcomment中的js改用jQuery好了。 活着就是为了折腾，改版周期为一周！]]></description>
			<content:encoded><![CDATA[<p>最近做收费的程序已经做得比较累了，但是由于本人又不喜欢玩游戏，所以打算抽点时间来改版这个blog吧。不过这次不全面改版，没有那个精力了。接受<a href="http://dupola.com/">dupola</a>的<a href="http://www.storyday.com/html/y2008/1422_naked-flow-and-wangzhuan.html#comment-4615">建议</a>，初步决定装上<a href="http://zhiqiang.org/blog">zhiqiang</a>的ajaxcomment插件，这样就能在留言本无限的回复了，由于这个插件调用了大约7k的js，打算再精简一下，于是乎准备同时也将这个插件改写了！</p>
<p>考虑到 <a href="http://jquery.com/">jQuery</a>的优良特性和瘦弱的体积（gzip之后只有10k左右），所以本站将采用jQuery来驱动，一方面为今后添加新的功能打下基础，另外一个方面也当作实验用，因为下一步的shopex要采用到这个脚本，<a href="http://bloggermap.org">bloggermap.org</a>也将用<a href="http://jquery.com/">jQuery</a>来驱动。既然如此，同时将ajaxcomment中的js改用<a href="http://jquery.com/">jQuery</a>好了。</p>
<p>活着就是为了折腾，改版周期为一周！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2008/1425_intended-to-rewrite-the-template-jquery.html/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>利用周末对本站ajax评论进行了修改</title>
		<link>http://www.storyday.com/html/y2007/1310_ajax-cooment-modified.html</link>
		<comments>http://www.storyday.com/html/y2007/1310_ajax-cooment-modified.html#comments</comments>
		<pubDate>Sun, 25 Nov 2007 04:59:41 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://www.storyday.com/html/y2007/1310_ajax-cooment-modified.html</guid>
		<description><![CDATA[今天决定呆在家中对自己的这个blog程序做些少许的修改，其实从开始玩wordpress玩到现在，基本上开始对wordpress疲倦了 ，所以现在的修改都是一些小的修修补补，算是逐渐完善罢了！ 刚才写了一篇用javascript缓存ajax数据，于是写完之后便开始对本站的评论系统动刀了，这次改变有三点，首先是将评论的显示由倒序变成了顺序。做这个改变其实很难 ，因为不同的顺序有不同的好处，顺序显示留言看起来比较有条理，倒序显示能很方便地看到最新的留言，因为最新的总是显示在最前面，所以有个朋友说“总不至于翻页才能看到最新的留言吧”，真是让我为难，在gtalk上向朋友征求意见，得到的比例是1：1，所以目前先干脆改成顺序了，为了照顾翻页的问题，我将post对评论显示最大条数改成了30，这样就会很少出现翻页了。 第二个改变是增加了自动判断翻页是否显示功能，如果评论条数少于一页显示的最大数量，则不出现翻页按钮。 另外一个改变是增加ajax缓存功能，从今以后，如果该页的数据曾经载入，一旦访客再次回翻该页面，浏览器将不需要从服务器载入，而是直接从内存中将数据显示出来。(补充)由于缓存的存在，结果导致用户留言的时候客户端都无法刷新，搞了很久才解决这个问题，解决方法是如果用户留言，则删除内存中当前页面的缓存即可。 如果您是经常访问本站的朋友，请用ctrl+f5刷新一下你的浏览器，防止浏览器缓存原来的css和js从而导致页面浏览不正常，因为我对css和js都做了修改。另外，如果您有时间，能否告诉我是顺序显示留言（当前便是）还是逆序显示留言（改动之前的显示）比较好，谢谢了？]]></description>
			<content:encoded><![CDATA[<p>今天决定呆在家中对自己的这个blog程序做些少许的修改，其实从开始玩wordpress玩到现在，基本上开始对wordpress疲倦了 ，所以现在的修改都是一些小的修修补补，算是逐渐完善罢了！</p>
<p>刚才写了一篇<a href="http://www.storyday.com/html/y2007/1309_cache-ajax-data.html" rel="bookmark" title="Permanent Link to 用javascript缓存ajax数据">用javascript缓存ajax数据</a>，于是写完之后便开始对本站的评论系统动刀了，这次改变有三点，首先是将评论的显示由<strong>倒序</strong>变成了<strong>顺序</strong>。做这个改变其实很难 ，因为不同的顺序有不同的好处，顺序显示留言看起来比较有条理，倒序显示能很方便地看到最新的留言，因为最新的总是显示在最前面，所以有个朋友说“总不至于翻页才能看到最新的留言吧”，真是让我为难，在gtalk上向朋友征求意见，得到的比例是1：1，所以目前先干脆改成<strong>顺序</strong>了，为了照顾翻页的问题，我将post对评论显示最大条数改成了30，这样就会很少出现翻页了。</p>
<p>第二个改变是增加了自动判断翻页是否显示功能，如果评论条数少于一页显示的最大数量，则不出现翻页按钮。</p>
<p>另外一个改变是增加ajax缓存功能，从今以后，如果该页的数据曾经载入，一旦访客再次回翻该页面，浏览器将不需要从服务器载入，而是直接从内存中将数据显示出来。(补充)由于缓存的存在，结果导致用户留言的时候客户端都无法刷新，搞了很久才解决这个问题，解决方法是如果用户留言，则删除内存中当前页面的缓存即可。</p>
<p>如果您是经常访问本站的朋友，请用ctrl+f5刷新一下你的浏览器，防止浏览器缓存原来的css和js从而导致页面浏览不正常，因为我对css和js都做了修改。另外，如果您有时间，能否告诉我是<strong>顺序显示留言</strong>（当前便是）还是<strong>逆序显示留言</strong>（改动之前的显示）比较好，谢谢了？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2007/1310_ajax-cooment-modified.html/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>如何在wordpress插件中实现ajax</title>
		<link>http://www.storyday.com/html/y2007/1282_wp-plugin-ajax.html</link>
		<comments>http://www.storyday.com/html/y2007/1282_wp-plugin-ajax.html#comments</comments>
		<pubDate>Sun, 11 Nov 2007 09:41:04 +0000</pubDate>
		<dc:creator>江东</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[网站技术]]></category>
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://www.storyday.com/html/y2007/1282_wp-plugin-ajax.html</guid>
		<description><![CDATA[wordpress的优秀之处在于可以随便插,方便插,随处插.所以定制性是相当强悍的,可以做成CMS,甚至论坛.虽然有人会说这样很BT,但是如果你熟悉php,能站在WP的肩膀上,做出效率很高的其他程序又有何不可呢?一不小心又说了这么多的废话,毕竟我对WP的敬仰犹如滔滔江水.下面切入正题,介绍一下如何用插件配合javascript脚本在wordpress中实现ajax. Ajax其实没有传说中的那么复杂的,只要你稍微熟悉一点javascript就能自己写ajax程序了.在这里我想稍微纠正一些观点,那就是大家常说的那些滑动门技术,那些很炫的div特效其实和ajax技术无关的,仅仅是通过js捕获鼠标事件再加上CSS美化完成的,而Ajax=&#62;AsynchronousJavaScript+XML,说白了就是异步载入XML数据的一种javascript实现罢了. 通过ajax,我们可以在指定的DIV内根据需要在需要的时候载入数据从而实现无刷新更新内容.由于ajax获取的仅仅是需要的数据,所以变相的节约了网络中传输的数据量,提高了页面的载入速度,这也就是ajax能提速的原因,记住,这是ajax能提速的唯一的地方.所以千万别太迷信ajax的提速效果.关于ajax的实现,网络上可以google一大堆代码出来,所以我这里就不重复了.我推荐大家用jquery这个js框架,而不是自己去写复杂的ajax,具体的jquery和ajax请参考我的这篇文章. 客户端的js搞定了,现在的问题就是如何用插件来给ajax提供数据.前面说了,wordpress可以在很多地方接受你的插入,而对于ajax,我们最关心的就是在程序执行的初期进行插入,所以这里要用到这个勾子(hook)“add_action(“init”,”func”)”,这样就能利用默认的wordpress程序来给ajax提供数据，而不是自己编写第三方代码获取数据，下面给一段代码例子: /* Plugin Name: cos-smaple Plugin URI: http://www.storyday.com Description: sample Version: 1.0 Author: jiangdong date:2007-11-11 Author URI:http://www.storyday.com */ function ajaxsample(){ if( $_GET['ajax'] == true ){//如果用ajax,则需要在请求的时候加上特殊的?ajax=true,否则会影响正常的页面 echo $_GET['key'];//这里将浏览器的get变量echo出来 ?key=my-custom-key /*这里可以根据这个key在数据库中获取内容 ........这里省略代码若干行........ */ die();//因为仅仅是获取ajax数据用,所以ajax数据任务完成之后直接将程序die掉，别给出多余的数据。 } } add_action(&#8216;init&#8217;, &#8216;ajaxsample&#8217;); 激活了这个插件之后,大家访问http://your-domain.com/index.php?ajax=true&#38;key=your-custom-key 看看会有什么结果,是不是按照你的期待出现了特定的ajax需要的数据?本站主页右边显示的当前用户的历史留言就是这样来的,同样利用这样的方法可以在wordpress中实现更多精彩的ajax技术. 由于ajax技术本身需要使用人员对客户端和浏览器端的关系要清晰,并且至少应该要熟悉一点javascript编写,如果你是wp的爱好者,请首先要熟悉wp的模板编写方法.所这篇文章不是一篇入门的文章，唯一有的作用那就是“点拨”,希望对某些特定的朋友有所帮助. 鉴于前几天某些网友的E-mail和在本站的留言求助,写下了上面的文字,当然本人非此专业人士,有错误请指出哦,谢谢!]]></description>
			<content:encoded><![CDATA[<p>wordpress的优秀之处在于可以随便插,方便插,随处插.所以定制性是相当强悍的,可以做成CMS,甚至论坛.虽然有人会说这样很BT,但是如果你熟悉php,能站在WP的肩膀上,做出效率很高的其他程序又有何不可呢?一不小心又说了这么多的废话,毕竟我对WP的敬仰犹如滔滔江水.下面切入正题,介绍一下如何用插件配合javascript脚本在wordpress中实现ajax.</p>
<p>Ajax其实没有传说中的那么复杂的,只要你稍微熟悉一点javascript就能自己写ajax程序了.在这里我想稍微纠正一些观点,那就是大家常说的那些滑动门技术,那些很炫的div特效其实和ajax技术无关的,仅仅是通过js捕获鼠标事件再加上CSS美化完成的,而Ajax=&gt;AsynchronousJavaScript+XML,说白了就是异步载入XML数据的一种javascript实现罢了. 通过ajax,我们可以在指定的DIV内根据需要在需要的时候载入数据从而实现无刷新更新内容.由于ajax获取的仅仅是需要的数据,所以变相的节约了网络中传输的数据量,提高了页面的载入速度,这也就是ajax能提速的原因,记住,这是ajax能提速的唯一的地方.所以千万别太迷信ajax的提速效果.关于ajax的实现,网络上可以google一大堆代码出来,所以我这里就不重复了.我推荐大家用<a href="http://www.storyday.com/html/y2007/1159_step-into-jquery.html">jquery</a>这个js框架,而不是自己去写复杂的ajax,具体的jquery和ajax请参考我的<a href="http://www.storyday.com/html/y2007/1168_jquery-with-ajax.html">这篇文章</a>.<span id="more-1282"></span><!--myurl--></p>
<p>客户端的js搞定了,现在的问题就是如何用插件来给ajax提供数据.前面说了,wordpress可以在很多地方接受你的插入,而对于ajax,我们最关心的就是在程序执行的初期进行插入,所以这里要用到这个勾子(hook)“add_action(“init”,”func”)”,这样就能利用默认的wordpress程序来给ajax提供数据，而不是自己编写第三方代码获取数据，下面给一段代码例子:</p>
<p><code>/*<br />
Plugin Name: cos-smaple<br />
Plugin URI: http://www.storyday.com<br />
Description: sample<br />
Version: 1.0<br />
Author: jiangdong<br />
date:2007-11-11<br />
Author URI:http://www.storyday.com<br />
*/<br />
function ajaxsample(){<br />
if( $_GET['ajax'] == true ){//如果用ajax,则需要在请求的时候加上特殊的?ajax=true,否则会影响正常的页面<br />
echo $_GET['key'];//这里将浏览器的get变量echo出来 ?key=my-custom-key<br />
/*这里可以根据这个key在数据库中获取内容<br />
........这里省略代码若干行........<br />
*/<br />
die();//因为仅仅是获取ajax数据用,所以ajax数据任务完成之后直接将程序die掉，别给出多余的数据。<br />
}<br />
}</code></p>
<p>add_action(&#8216;init&#8217;, &#8216;ajaxsample&#8217;);</p>
<p>激活了这个插件之后,大家访问http://your-domain.com/index.php?ajax=true&amp;key=your-custom-key<br />
看看会有什么结果,是不是按照你的期待出现了特定的ajax需要的数据?本站主页右边显示的当前用户的历史留言就是这样来的,同样利用这样的方法可以在wordpress中实现更多精彩的ajax技术.</p>
<p>由于ajax技术本身需要使用人员对客户端和浏览器端的关系要清晰,并且至少应该要熟悉一点javascript编写,如果你是wp的爱好者,请首先要熟悉wp的模板编写方法.所这篇文章不是一篇入门的文章，唯一有的作用那就是“点拨”,希望对某些特定的朋友有所帮助.</p>
<p>鉴于前几天某些网友的E-mail和在本站的留言求助,写下了上面的文字,当然本人非此专业人士,有错误请指出哦,谢谢!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.storyday.com/html/y2007/1282_wp-plugin-ajax.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

