xml和json的区别

XML 是一种用于面向服务的体系结构 (SOA) 和数据传输的常见传输。当然,目前许多服务以 SOAP 格式存在。不过,何时将其用于数据传输在 Ajax 社区中存在分岐。

[  XML ]

使用XML作为传输格式的优势:

1. 格式统一, 符合标准

2. 容易与其他系统进行远程交互, 数据共享比较方便

3.调用将 XML 用作传输的现有服务。

4.使用 XSLT 可以动态转换 XML。这是企业服务总线 (ESB) 方案中的理想功能。

缺点:

1. XML文件格式文件庞大, 格式复杂, 传输占用带宽

2. 服务器端和客户端都需要花费大量代码来解析XML, 不论服务器端和客户端代码变的异常复杂和不容易维护

3. 客户端不同浏览器之间解析XML的方式不一致, 需要重复编写很多代码

4. 服务器端和客户端解析XML花费资源和时间

[ JSON ]

那么除了XML格式, 还有没有其他格式, 有一种叫做JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作.

优点:

1. 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小,浏览器解析快

2. 易于解析这种语言, 客户端JavaScript可以简单的通过eval()进行JSON数据的读取

3. 构造友好,支持多种语言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析

4. 在PHP世界, 已经有PHP-JSON和JSON-PHP出现了, 便于PHP序列化后的程序直接调用. PHP服务器端的对象、数组等能够直接生JSON格式, 便于客户端的访问提取.

5. 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护

6.相当稳定。JSON 的附加内容将成为超集。

缺点:

1. 没有XML格式这么推广的深入人心和使用广泛, 没有XML那么通用性

2. JSON格式目前在Web Service中推广还属于初级阶段

探讨PHP页面跳转几种实现技巧

Web系统中,从一个网页跳转到另一个网页,是LAMP项目中最常用的技术之一。页面跳转可能是由于用户单击链接、按钮等引发的,也可能是系统自动产生的。 此处介绍PHP中常用的实现页面自动跳转的方法。

PHP页面跳转一、header()函数
header()函数是PHP中进行页面跳转的一种十分简单的方法。header()函数的主要功能是将HTTP协议标头(header)输出到浏览器。

header()函数的定义如下:

void header (string string [,bool replace [,int http_response_code]])

可选参数replace指明是替换前一条类似标头还是添加一条相同类型的标头,默认为替换。

第二个可选参数http_response_code强制将HTTP相应代码设为指定值。 header函数中Location类型的标头是一种特殊的header调用,常用来实现页面跳转。注意:1.location和“:”号间不能有空格,否则不会跳转。

2.在用header前不能有任何的输出。

3.header后的PHP代码还会被执行。例如,将浏览器重定向到深达网站

PHP页面跳转二、Meta标签
Meta标签是HTML中负责提供文档元信息的标签,在PHP程序中使用该标签,也可以实现页面跳转。 若定义http-equiv为refresh,则打开该页面时将根据content规定的值在一定时间内跳转到相应页面。

若设置content=”秒数;url=网址”,则定义了经过多长时间后页面跳转到指定的网址。
例如,使用meta标签实现疫苗后页面自动跳转到深达官方网站。
< meta http-equiv=”refresh” content=”1;url=http://www.sendnet.cn”>

例如,以下程序meta.php实现在该页面中停留一秒后页面自动跳转到www.sendnet.cn

PHP页面跳转三、JavaScript
例如,此代码可以放在程序中的任何合法位置。

以上就是我们向大家介绍的三种PHP页面跳转实现方法。

修改配置fckeditor

   

由于从网上下载的fckeditor过大并且也不适于自己的需要,而4ngel提供的精简版(

http://www.sablog.net/blog/ action=show&id=379


)又去掉了一些我所需要的功能(比如图片上传),于是萌生了自己修改的想法。说干就干,步骤记录



如下:首先从官方网站上下载fckeditor2.6,地址:

http://www.fckeditor.net/download



,解压开来后,删除所有以”_”开头的文件夹和文件,另外根目录下只保留以下文件:fckconfig.js,fckeditor.js,fckeditor.php,fckeditor_php5.hp,fckstyles.xml,fcktemplates.xml


默认的编辑器样式是上半部分没有边框的,而4ngel提供的则是有边框的,看起来也更加美观。对此进行修改:

   打开editor目录下的fckeditor.html文件,找到 id=”xToolbarSpace” 的td行(大概在第271行),修改其style为:”overflow: hidden;border:1px solid #696969;border-width:1px 0 0 1px;”,此处是设置工具栏的左边框和上边框,再找到id=”xCollapseHandle”所在行,在其style上加入padding:0,此处是为了减小显示/隐藏工具栏所占用的空间。经此修改后的界面为:



注:由于是事后记录,以上的工具栏是重新配置过的~

      下一步替换掉原来的默认表情,而使用4ngel精简版中的表情。方法如下:将准备好的QQ表情复制到/editor/images/smiley目录中,这里也可以新建个目录或者复制到其中目录中,最后修改fckconfig.js文件,找FCKConfig.SmileyPath所在行,修改此配置值。比如我是在smiley下新建个qq目录,并将表情拷贝到其中,则对应的配置是:

FCKConfig.SmileyPath    = FCKConfig.BasePath + ‘images/smiley/qq/’ ;
然后再修改FCKConfig.SmileyImages为

FCKConfig.SmileyImages    = [‘1.gif’,’10.gif’,’11.gif’,’12.gif’,’13.gif’,’14.gif’,’15.gif’,’16.gif’,’17.gif’,’18.gif’,’19.gif’,

‘2.gif’,’20.gif’,’21.gif’,’22.gif’,’23.gif’,’24.gif’,’25.gif’,’26.gif’,’27.gif’,’28.gif’,’29.gif’,

‘3.gif’,’30.gif’,’31.gif’,’32.gif’,’33.gif’,’34.gif’,’35.gif’,’36.gif’,’37.gif’,’38.gif’,’39.gif’,

‘4.gif’,’40.gif’,’41.gif’,’42.gif’,’43.gif’,’44.gif’,’45.gif’,’46.gif’,’47.gif’,’48.gif’,’49.gif’,

‘5.gif’,’50.gif’,’51.gif’,’52.gif’,’53.gif’,’54.gif’,’55.gif’,’56.gif’,’57.gif’,’58.gif’,’59.gif’,

‘6.gif’,’60.gif’,’61.gif’,’62.gif’,’63.gif’,’64.gif’,’7.gif’,’8.gif’,’9.gif’] ;

同时,再修改

FCKConfig.SmileyColumns
FCKConfig.SmileyWindowWidth
FCKConfig.SmileyWindowHeight

 

的值。至此,表情替换完成。

    接下来将fck汉化,找到fckconfig.js中以下两行

FCKConfig.AutoDetectLanguage 
FCKConfig.DefaultLanguage 

 

将其值分别设为false和zh-cn。fckeditor语言文件在editor/lang目录下,可将多余的语言文件删除。

    再修改fckeditor的字体列表,可在FCKConfig.FontNames配置项中加入中文常用字体,如“宋体;黑体;隶书;楷体_GB2312”。

    最后再按自己所需对工具栏进行配置。至此配置算是完成了。

    接下来做的是修改一些上传方面的设置。首先修改的是插入图片中的文件上传功能。按照官方说明,找到fckconfig中的

FCKConfig.ImageUploadURL

 

 配置,此配置定义了图片上传表单的action值,如果不修改此值,则默认由/editor/filemanager/connectors中的相关文件来处理,对于PHP环境,则由php/upload.php来处理。

    由于我的项目是基于ThinkPHP编写的,因此此处我将此值设定为:FCKConfig.BasePath+’../../../../../index.php/Public/uploadImage,由PublicAction的uploadImage来处理图片上传。首先需要了解由服务端返回给客户端的消息类型,找到\editor\dialog\fck_image.js文件,在OnUploadCompleted函数中,我们可以看到由服务器返回给客户端的信息类型:

errNumer共有:0,表明上传成功,201表明由于存在同名文件故将上传文件重命名,202表明非法/无效的文件类型,203表明没有上传权限,500表明connector被禁用,另外1为自定义错误,101为自定义警告,其他情况下为在上传过程中发生错误。除errNumber外,服务器还要返回上传后文件的URL,文件名,自定义信息。OnUploadCompleted的声明为:

    OnUploadCompleted( errorNumber, fileUrl, fileName, customMsg )

完整的服务器输出参见io.php(位于
/editor/filemanager/connectors/php目录中

),代码如下:

function SendUploadResults( $errorNumber, $fileUrl = '', $fileName = '', $customMsg = '' )
{
	// Minified version of the document.domain automatic fix script (#1919).
	// The original script can be found at _dev/domain_fix_template.js
	echo <<<EOF
<script type="text/javascript">
(function(){var d=document.domain;while (true){try{var A=window.parent.document.domain;break;}catch(e) {};d=d.replace(/.* ( :\.|$)/,'');if (d.length==0) break;try{document.domain=d;}catch (e){break;}}})();
EOF;

	$rpl = array( '\\' => '\\\\', '"' => '\\"' ) ;
	echo 'window.parent.OnUploadCompleted(' . $errorNumber . ',"' . strtr( $fileUrl, $rpl ) . '","' . strtr( $fileName, $rpl ) . '", "' . strtr( $customMsg, $rpl ) . '") ;' ;
	echo '</script>' ;
	exit ;
}

 
 

至此,我们可以编写出自己所需upload处理代码了。

 

 //先到这里了…

  • 大小: 28.3 KB

SAP展开最大并购行动68亿美元收购商业智能软件BO

2007.10.08  来自:新浪科技      共有评论(1)条 发表评论   [收藏到我的网摘]

德国软件巨头SAP周日表示,将以48亿欧元(约合68亿美元)现金收购法国商业智能软件开发商博奥杰(Business Objects)。SAP称,将以每股42欧元收购博奥杰,比博奥杰上周五收盘价溢价20%。分析人士称,SAP并购博奥杰意味着其市场策略的改变。
主机完全DIY,域名免费试用 sap
时代互联100M主机 216元/年
www.now.cn
SCA标准制定参与感触——形成规矩的规矩 sap
SOA的世界是一个充满规矩的世界。之所以能够顺利地 SCA的是由四大家发起的,IBM、BEA、Orac
gocom.biz.csdn.net/
普元程朝晖:面向构件就是面向服务 sap
普元软件公司宣布相继加入SCA(服务构件架构)与S 普元软件研发及市场副总裁程朝晖表示,作为18个成员
gocom.biz.csdn.net/

<script type=”text/javascript”>show_ads_zone(13);</script>
<script src=”http://z.csdn.net/adjs.php n=630401067&amp;amp;what=zone:13&amp;amp;charset=utf-8&amp;amp;exclude=,&amp;amp;referer=http%3A//www.csdn.net/” type=”text/javascript” language=”JavaScript”></script>

德国软件巨头SAP周日表示,将以48亿欧元(约合68亿美元)现金收购法国商业智能软件开发商博奥杰(Business Objects)。这也是SAP迄今为止最大规模的并购行为。SAP称,收购博奥杰的主要动机是欲借此开拓新业务。

  SAP称,将以每股42欧元收购博奥杰,比博奥杰上周五收盘价溢价20%。分析人士称,SAP并购博奥杰意味着其市场<nobr>策略</nobr>的改变。同竞争对手甲 骨文相比,SAP较少采取并购行动,而更愿意凭借自身力量实现业务增长。SAP此前表示,将致力于发展更多中小型<nobr>企业</nobr>客户,以实现在2010年前使客户群 翻番并达到10万户的目标。

  博奥杰主营商业智能软件,企业客户可借此维护大型数据以推测市场发展趋势。该公司刚刚发布的今年第三季度初步财报显示,销售额在3.66亿美元 到3.70亿美元之间,低于分析人士3.851亿美元的预期;每股盈利在0.36~0.39美元之间,低于分析人士0.51美元的预期。博奥杰称, 2006年销售额为12.5亿美元;目前客户量为4.3万户,其中40%同时也是SAP客户。

dhtmlXTree指南与实例

dhtmlXTree 指南与实例

  主要特征

  多浏览器/多平台支持

  全部由JavaScript节制

  动态加载

  XML支持

  大数据树动态翻译(智能XML解析)

  拖拽(同1个树,差别的树之间,差别的框架之间)

  带多选框(CheckBox)的树(两态/三态)

  定制图标(使用JavaScript或xml)

  内容菜单(与dhtmlxMenu集成)

  结点数据为用户数据

  多行结点

  高不改变性别

  支持Macromedia Cold Fusion

  转自:http://blog.csdn.net/Colin_Bin/archellove/2008/10/29 /3166205.aspx

  支持Jsp

  支持ASP.NET

  支持以下浏览器

  IE 5.5或更高版本

  Mac OS X Safari

  Mozilla 1.4 或更高版本

  FireFox 0.9 或更高版本

  Opera (Xml加载支持取决于浏览器版本)

  使用dhtmlXTree举行开发

  在页面初始化对象

  <div id=”treeBox” );

  tree.enableCheckBoxes(false);

  tree.enableDragAndDrop(true);

  </script>

  构造器有以下参数:

  加载树的容器对象(应该在挪用构造器之前被加载)

  树的宽度

  树的高度

  树根的父结点的id(超等根)

  指定树的其他参数:

  setImagePath(url) – 设置树所使用的图片目录地址

  enableCheckBoxes(mode) – 打开/关闭多选框(默许打开)

  enableDragAndDrop(mode) – 打开/关闭拖拽模式

  设置事务处理

  1.5以上的版本支持一种新的设置事务的体式格局-使用attachEvent方法.设置1个事务处理方法需要懂得事务的名字和所挪用的方法.可用的事务名参考这里(往后会翻译),在事务处理方法中,可以这样引用树对象:

  <div id=”treeBox” ,onNodeSelect)//set function object to call on node select

  //see other available event handlers in API documentation

  function onNodeSelect(nodeId){

  …

  }

  </script>

  很多时候函数要从参数中获取值.关于传值得详细信息请参考事务文档(往后翻译)

  使用剧本增加结点

  <script>

  tree=new dhtmlXTreeObject(‘treeBox’,”100%”,”100%”,0);

  …

  tree.insertNewChellold(0,1,”New Node 1″,0,0,0,0,”SELECT,CALL,TOP,CHILD,CHECKED”);

  tree.insertNewNext(1,2,”New Node 2″,0,0,0,0,”CHILD,CHECKED”);

  </script>

  第4-7的参数都是0(选择后挪用的方法,所使用的图片)意味着都使用默许值

  最后1个使用逗号分开的参数可以是以下值(只能是大写):

  SELECT – 插入后选择此结点

  CALL – 在选择时挪用方法

  TOP – 在最上方插入此结点

  CHILD – 此结点有子结点

  CHECKED – 此结点的多选框被选中(如果有的话)

  使用XML加载数据

  <script>

  tree=new dhtmlXTreeObject(‘treeBox’,”100%”,”100%”,0);

  tree.setXMLAutoLoading(“http://127.0.0.1/xml/tree.xml”);

  tree.loadXML(“http://127.0.0.1/xml/tree.xml”);//load root level from xml

  </script>

  在挪用时,被打开的结点id(就像url参数一样)将会被增加到初始化XMLAutoLoading(url) 的URL地址上去

  挪用loadXML(url)方法不会增加id到url地址上

  挪用无参的loadXML()将会使用XMLAutoLoading(url)所指定的url地址

  XML语法:

  < xml version=’1.0′ encoding=’iso-8859-1′ >

  <tree id=”0″>

  <item text=”My Computer” id=”1″ chellold=”1″ im0=”my_cmp.gif” im1=”my_cmp.gif” im2=”my_cmp.gif” call=”true” select=”yes”>

  <userdata >

  PHP剧本需要在页面头添加以下代码:

  < php

  if ( stristr($_SERVER[“HTTP_ACCEPT”],”application/xhtml +xml”) ) {

  header(“Content-type: application/xhtml+xml”); } else {

  header(“Content-type: text/xml”);

  }

  echo(“< xml version=\”1.0\” encoding=\”iso-8859-1\” >\n”);

   >

  <tree>结点是必需有的.指定加载数据的父结点.这个id参数指定了父结点id.加载根层需要在创建树的时候指定id:new myObjTree(boxObject,width,height,0)

  <itrem>可以包含(为了一次加载多层结点)或不包含子结点.而且可以包含<itemtext>标签,可以为结点标签(label)增加一些HTML (text属性将会被忽略)

  <item id=”123″>

  <itemtext><![CDATA[<font color=”red”>Label</font>]]></itemtext>

  </item>

  必要属性有:

  text – 结点预示的标签

  id – 结点id

  可选属性有:

  tooltip – 鼠标放在结点上提醒的信息

  im0 – 没有子结点的结点预示的图片(将会从setImagePath(url)方法指定的路径去获取图片)

  im1 – 包含子结点的结点睁开时预示的图片

  im2 – 包含子结点的结点关闭时预示的图片

  aCo1 – 没有选中的结点的颜色

  sCol – 选中的结点的颜色

  select – 在加载时选择此结点(可以为任意值)

  style – 结点文本风格

  open – 睁开此结点(可以为任意值)

  call – 选择时挪用函数(可以为任意值)

  checked – 如果存在的话,选择此结点的多选框(可以为任意值)

  chellold – 指定结点是否有子结点(1:有,0:无)

  imheight – 图标的高度

  imwidth – 图标的宽度

  topoffset – 设置结点和上层结点间的偏移量

  radio – 如果非空 则此结点的子结点会有单选按钮

  直接在XML里面设置用户数据可使用<userdata>标签,此标签只有1个参数:

  name

  和 value 去指定用户数据值

  为结点定制图标

  有两种方法去定制结点图标,这取决于增加结点的体式格局.注重:树将会从setImagePath(url)方法指定的路径去获取结点图片.

  Javascript的体式格局:使用insertNewChellold(…)或insertNewNext(…)方法的参数指定

  <script>

  var im0 = “doc.gif”;//icon to show if node contains no chelloldren

  var im1 = “opened.gif”;//if node contains chelloldren and opened

  var im2 = “关上d.gif”;//if node contains chelloldren and 关上d

  tree.insertNewItem(0,1,”New Node 1″,0,im0,im1,im2);

  tree.insertNewNext(1,2,”New Node 2″,0,”txt.gif”,”opened.gif”,”关上d.gif”);

  </script>

  XML的体式格局.使用<item>标签的属性:

  < xml version=’1.0′ encoding=’iso-8859-1′ >

  <tree id=”0″>

  <item text=”My Computer” id=”1″ chellold=”1″ im0=”doc.gif” im1=”my_opened.gif” im2=”my_关上d.gif”>

  </tree>

  im0 – 没有子结点的结点预示的图片(将会从setImagePath(url)方法指定的路径去获取图片)

  im1 – 包含子结点的结点睁开时预示的图片

  im2 – 包含子结点的结点关闭时预示的图片

  构建动态树

  如果树包含很大数量的结点(或你只是不想华侈时间去加载隐藏的结点),按照需要去加载他们似乎是更好的选择,而不是一次性的全部加载进来.因此我们使用 XML动态加载树.请参考”使用XML加载数据”或查阅”Dynamical Loading in dhtmlxTree v.1.x”

  操作结点

  一些使用树的方法来操作结点的例子:

  <script>

  tree=new dhtmlXTreeObject(‘treeboxbox_tree’,”100%”,”100%”,0 );

  …

  var sID = tree.getSelectedItemId();//get id of selected node

  tree.setLabel(sID,”New Label”);//change label of selecte node

  tree.setItemColor(sID,’blue’,’red’);//set colors for selected node’s label (for not selected state and for selected state)

  tree.openItem(sID);//expand selected node

  tree.关上Item(sID);//关上 selected node

  tree.changeItemId(sID,100);//change id of selected node to 100

  alert(“Thellos node has chelloldren: “+tree.hasChelloldren(100));//show alert with information if thellos node has chelloldren

  </script>

  序列化树

  序列化方法允许从xml表现形式(xml字符串)中获取树.差别水平的序列化会在生成的XML字符串的属性上面反映出来

  <script>

  tree.setSerializationLevel(userDataFl,itemDetailsF l);

  var myXmlStr = tree.serializeTree();

  </script>

  没有参数的序列化- id,open,select,text,chellold

  参数userDataFl true – userdata

  参数itemDetailsFl true – im0,im1,im2,acolor,scolor,checked,open

  Tooltips (鼠标放在结点上所提醒的内容)

  有三种方法去设置tooltip :

  使用结点的label(“text”item结点的text属性)作为tooltip – enableAutoTooltips(mode) – 默许为false

  使用item结点的”tooltip”属性作为tooltip(如果此属性被设置了则默许使用此方法)

  使用setItemText(itemId,newLabel,newTooltip) 方法

  移动结点

  编程式的移动可使用以下方法:

  向上/下/左移动:

  tree.moveItem(nodeId,mode)

  mode 可以是以下值:

  ”down” – 把结点移动到下方(不用再意条理关系)

  ”up” – 把结点移动到上方

  ”left” – 把结点直接移动到上层位置

  直接移动到指定位置(在树内部)

  tree.moveItem(nodeId,mode,targetId)

  mode 可以是以下值:

  ”item_chellold” – 把结点移动到第三个参数子结点的位置作为子结点

  ”item_sibling” -把结点移动到第三个参数兄弟结点的位置作为兄弟结点

  targetId – 目标结点的Id To move node into position (to another tree) 移动结点到指定位置(另1个树)

  tree.moveItem(nodeId,mode,targetId,targetTree)

  mode 的值参考以上两个例子 targetId – 目标结点的Id(在targetTree里面的id). targetTree – 目标树对象 剪切/粘贴的体式格局 另一种体式格局是使用doCut()和doPaste(id)函数-但是这种方法只能对选中的结点有效.程序员也可以从1个位置删去1个结点然后再另外1个地 方再创建1个(也是个办法:-)).提供给用户拖拽功效去移动结点

  结点统计器

  可以预示指定结点标签(label)的结点子元素的数量.激活此方法使用以下代码:

  <script>

  tree.setChelloldCalcMode(mode);

  </script>

  mode 可以是以下值:

  ”chellold” – 这层的所有子结点

  ”leafs” – 这层的所有没有子结点的子结点

  ”chelloldrec” – 所有子结点

  ”leafsrec” -没有子结点的所有子结点

  ”disabled” – 什么都没有

  其他相干方法: _getChelloldCounterValue(itemId) – 得到时下的记数值 setChelloldCalcHTML(before,after) – 包含统计器的html代码 如果在动态加载中需要设定统计器的值,请在xml中使用chellold属性

  智能XML解析

  智能XML解析的概念很简略-整个树结构是从客户端加载的,但是只有应该被预示的结点才会被展示出来.很有效的减少了加载时间和大数据量树的性能.另外-与动态加载相反的是-剧本方法可使用整个树结构(好比搜刮整个树-而不是只有被预示出来的)

  用以下方法激活智能XML解析:

  <script>

  tree.enableSmartXMLParsing(true);//false to disable

  </script>

  在树被完全睁开的时候只能XML解析不会产生作用

  树的多选框

  dhtmlxTree支持两态和三态树.三态树有三种状况:选中/未选中/某些子结点被选中(不是全部)

  用以下方法激活三态树:

  <script>

  tree.enableThreeStateCheckboxes(true)//false to disable

  </script>

  使用智能XML解析的话需要手工设置第三种状况(checked=”-1″);

  <item checked=”-1″ …>

  <item checked=”1″ …/>

  <item …/>

  </item>

  Checkboxes可以被禁用-disableCheckbox(id,state)

  一些结点可以隐藏checkboxes – showItemCheckbox(id,state) (nocheckbox xml 属性)

  版本1.4往后 showItemCheckbox可以对整棵树使用(第1个参数使用0或null)

  树的单选框

  dhtmlxTree支持但选按钮 使用以下代码对整棵树举行设置

  <script>

  tree.enableRadiobuttons(true);

  </script>

  对某些特定的结点使用单选按钮(代替多选框)

  <script>

  tree.enableCheckboxes(true);

  tree.enableRadiobuttons(nodeId,true);

  </script>

  默许环境下单选按钮是根据条理分组的,但是版本1.4往后可以对整棵树举行设置:

  tree.enableRadiobuttons(true)

  Checkboxs相干的API和XML属性也适用于radiobuttons(参考radiobuttons方法描述)

  拖拽技术

  拖拽有三种模式(使用setDragBehavior(mode)方法举行设置)

  看成子结点拖拽-“chellold”

  看成兄弟结点拖拽-“sibling”

  复合模式(前两种模式一路)- “complex” 每种模式还有两种子模式:

  1. 普通拖拽

  2. 复制拖拽 – tree.enableMercyDrag(1/0)

  所有模式都可以在运行时改变

  事务处理

  在处理结点放下之前的事务使用-attachEvent(“onDrag”,func)如果func没有返回true,将会取消拖拽.将结点放下后会有另 1个事务-onDrop-使用attachEvent(“OnDrop”,func)举行处理.两种方法都会传给func对象五个参数

  被拖拽结点的id

  目标结点的id

  前目标结点(如果拖拽的是兄弟结点)

  源树对象

  目标树对象

  两个框架之间的拖拽

  默许环境下框架间的拖拽是开启的.只需要把下列代码加在页面上没有树的处所

  <script src=”codebase/dhtmlxcommon.js”></script>

  <script>

  new dhtmlDragAndDropObject();

  </script>

  提高性能

  如果生成DHTML树的性能很低,有两种路子去改进大数据树的性能:

  1.Dynamical Loading(动态加载)

  2.Smart XML Parsing(智能XML解析)

  3.Distributed Parsing(分布式解析)

  4.Smart Rendering(动态预示)

  另外确保你的树组织的很好-把很多个结点放在同一层很不美观而且降低性能,虽然分布式解析或智能预示可以解决这个不懂的题目

  上下文菜单

  在dhtmlxTree里面可以构建上下文菜单.菜单的上下文可使用XML或剧本举行设置.改变上下文菜单内容取决于树结点开发人员可以实现函数隐藏/预示同1个菜单的结点或差别菜单的差别结点.底下的代码激活上下文菜单

  <script>

  //init menu

  aMenu=new dhtmlXContextMenuObject(‘120’,0,”../codebase/imgs/ “);

  aMenu.menu.loadXML(“menu/_context.xml”);

  aMenu.setContextMenuHandler(onMenuClick);

  //init tree

  tree=new dhtmlXTreeObject(“treeboxbox_tree”,”100%”,”100%”,0 );

  …

  tree.enableContextMenu(aMenu); //link context menu to tree

  function onMenuClick(id){

  alert(“Menu item “+id+” was clicked”);

  }

  HTTPS 兼容

  为了兼容HTTPS,我们需要为上下文菜构造器增加两个参数

  Images URL

  Dummy page URL (url of the page to use for iframes src /now they are empty as iframes are used to make menu be positioned under selectboxes in IE/ in menu to make it compatible with https)

  <script>

  //init menu compatible with sHTML

  aMenu=new dhtmlXContextMenuObject(‘120’,0,”imgs/”,”empty.htm l”);

  …

  </script>

  刷新结点

  refreshItems(itemIdList,source) 仅刷新itemIdList里面的结点(不包含它们的子结点)

  refreshItem(itemId) – 刷新itemId指定的子结点.自动加载会被激活

  结点排序

  专业版本中可以对结点举行排序(需要dhtmlxtree_sb.js)使用以下体式格局:根据标签(label)文本(如果没有定制比较描述符)

  tree.sortTree(nodeId,order,all_levels);

  nodeId – 开始排序层的父结点id(如果是超等根Id,排序整棵树)

  order – 排序方向:”升序”/”降序”

  all_levels – 如果为true,则所有子层都会被排序

  //define your comparator (in our case it compares second words in label)

  function mySortFunc(idA,idB){

  a=(tree.getItemText(idA)).split(” “)[1]||””;

  b=(tree.getItemText(idB)).split(” “)[1]||””;

  return ((a>b) 1:-1);

  }

  tree = new …

  //attach your comparator to the tree

  tree.setCustomSortFunction(mySortFunc);

  比较函数有两个结点id,使用树对象和id返回1个比较结果.如果定制比较函数被指定.则tree.sortTree(…)方法使用此函数排序

  查找功效

  dhtmlxTree的查找功效允许开发人员把注重力从匹配标签(label)搜刮码中解脱出来,支持智能XML解析剧本语法

  tree.findItem(searchString); //find item next to current selection

  tree.findItem(searchString,1,1)//find item previous to current selection

  tree.findItem(searchString,0,1)//search from top

  例子包含在专业版中-samples/treeExPro2.html

  多行结点

  允许在多行预示树结点.提议关掉制止影响外观.开启多行功效需要以下代码:

  tree.enableTreeLines(false);

  tree.enableMultiLineItems(true);

  例子包含在专业版中-samples/treeExPro6.html

  树的图标

  设置图标

  有一种方法可使用剧本设置图标(setItemImage,setItemImage2)或xml (im0,im1,im2 attributes of item node):

  im0 – 没有子结点的结点

  im1 – 有子结点的关闭结点

  im2 – 有子结点的打开结点

  设置图标大小

  有一种方法可使用剧本或xml为整棵树或每个结点设置图标大小: XML设置每个结点的图标大小(可选):

  <item … imheight=”Xpx” imwidth=”Xpx”></item>

  剧本语法:

  tree.setIconSize(w,h);//set global icon size

  tree.setIconSize(w,h,itemId)//set icon size for particular item

  键盘导航

  默许环境下dhtmlxTree没有支持键盘功效,但是可以在页面中增加dhtmlxtree_kn.js 文件去开启键盘支持,只需要底下一条指令:

  <script src=”../codebase/ext/dhtmlxtree_kn.js”></script>

  <script>

  tree.enableKeyboardNavigation(true);

  </script>

  默许按键:

  Up arrow – 选择上面的结点

  Down arrow – 选择底下的结点

  Right arrow – 打开结点

  Left arrow – 关闭结点

  Enter – 挪用结点方法

  也可以指定自己的按键如次:

  tree.assignKeys([[“up”,104],[“down”,98],[“open”,10 2],[“关上”,100],[“call”,101]]);

  ”up”/”down”/”open”/”关上”/”call” 是可用的动作,数字是按键代码

  分布式解析

  另一种增加大数据树(每层100-200个结点)性能的方法是分布式解析,这个是企业版才有的功效.最大的利益是可以在树完全被解析之前瞥见树的条理并筹办使用.使用以下命令激活这个功效:

  <script>

  tree.enableDistributedParsing(mode,count,timeout);

  </script>

  参数:

  mode – 必要参数- true/false – 开启/关闭分布解析

  count – 可选参数- 分配结点的数量

  timeout – 可选参数- 两部分结点之间推迟的毫秒数,这个功效完全和智能XML解析兼容

  错误处理

  一些dhtmlxTree异样可以被捕捉而且处理

  function myErrorHandler(type, desc, erData){

  alert(erData[0].status)

  }

  dhtmlxError.catchError(“ALL”,myErrorHandler);

  支持错误类型:

  ”All”

  ”LoadXML”

  处理函数参数:

  type – 字符串(如上)

  desc – 错误描述(硬编码)

  erData – 错误相干对象数组(如次).

  Type Object(s)

  LoadXML [0] – response object

  Cold Fusion 标签

  <cf_dhtmlXTree

  >

  …configuration xml…

  </cf_dhtmlXTree>

  name – [optional] name of the tree js object to use in javascript, if skiped, then name autogenerated

  width – [optional] width of the tree (definitely it sets the with of the tree box, leaving the with of the tree itself by 100%)

  height – [optional] height of the tree

  JSPath – [optional] absolute or relative path to directory whelloch contains tree js files, “js” directory by default

  CSSPath – [optional] absolute or relative path to directory whelloch contains tree css files, “css” directory by default

  iconspath – [optional] absolute or relative path to directory whelloch contains tree icon files, “img” directory by default

  xmldoc – [mandatory for xml loading] url of the xml file used to load levels dynamically

  checkboxes – [optional] show checkboxes (none, twoState, threeState)

  dragndrop – [optional] activate drag-&-drop (true,false)

  style – [optional] style for the tree box

  onSelect – [optional] javascript function to call on node selection

  oncheck – [optional] javascript function to call on node (un)checking

  onDrop – [optional] javascript function to call on node drop

  im1 – [optional] default image used for chellold nodes

  im2 – [optional] default image used for opened branches

  im3 – [optional] default image used for 关上d branches For description of optional configuration xml – see chapter “Loading data with XML”

  Minimal possible tag syntax with on-page xml:

  <cf_dhtmlXTree>

  <item text=”Top node” id=”t1″ >

  <item text=”Chellold node 1″ id=”c1″ ></item>

  <item text=”Chellold node 2″ id=”c2″ ></item>

  </item>

  </cf_dhtmlXTree> Minimal possible tag syntax with server-side xml:

  <cf_dhtmlXTree xmldoc=”tree.xml”>

  </cf_dhtmlXTree> With images specified:

  <cf_dhtmlXTree

  im1=”book.gif”

  im2=”books_open.gif”

  im3=”books_关上.gif”>

  <item text=”Mystery ” id=”mystery” open=”yes” >

  <item text=”Lawrence Block” id=”lb” >

  <item text=”All the Flowers Are Dying” id=”lb_1″ />

  <item text=”The Burglar on the Prowl” id=”lb_2″ />

  <item text=”The Plot Thellockens” id=”lb_3″ />

  <item text=”Grifters Game” id=”lb_4″ />

  <item text=”The Burglar Who Thought He Was Bogart” id=”lb_5″ />

  </item>

  <item text=”Robert Crais” id=”rc” >

  <item text=”The Forgotten Man” id=”rc_1″ />

  <item text=”Stalking the Angel” id=”rc_2″ />

  <item text=”Free Fall” id=”rc_3″ />

  <item text=”Sunset Express” id=”rc_4″ />

  <item text=”Hostage” id=”rc_5″ />

  </item>

  <item text=”Ian Rankin” id=”ir” ></item>

  <item text=”James Patterson” id=”jp” ></item>

  <item text=”Nancy Atherton” id=”na” ></item>

  </item>

  </cf_dhtmlXTree> With Events Handlers,Checkboxes and Drag-n-drop:

  <cf_dhtmlXTree

  dragndrop=”true”

  checkboxes=”twoState”

  onSelect=”onClick”

  onCheck=”onCheck”

  onDrop=”onDrag”>

  <item text=”Mystery ” id=”mystery” open=”yes” >

  <item text=”Lawrence Block” id=”lb” >

  <item text=”All the Flowers Are Dying” id=”lb_1″ />

  <item text=”The Burglar on the Prowl” id=”lb_2″ />

  <item text=”The Plot Thellockens” id=”lb_3″ />

  <item text=”Grifters Game” id=”lb_4″ />

  <item text=”The Burglar Who Thought He Was Bogart” id=”lb_5″ />

  </item>

  <item text=”Robert Crais” id=”rc” >

  <item text=”The Forgotten Man” id=”rc_1″ />

  <item text=”Stalking the Angel” id=”rc_2″ />

  <item text=”Free Fall” id=”rc_3″ />

  <item text=”Sunset Express” id=”rc_4″ />

  <item text=”Hostage” id=”rc_5″ />

  </item>

  <item text=”Ian Rankin” id=”ir” ></item>

  <item text=”James Patterson” id=”jp” ></item>

  <item text=”Nancy Atherton” id=”na” ></item>

  </item>

  </cf_dhtmlXTree> 可编纂结点

  1.3版本后dhtmlxTree专业版可使用可编纂结点.只须在页面中引用dhtmlxtree_ed.js 去开启这个功效:

  <script src=”../codebase/ext/dhtmlxtree_ed.js”></script>

  <script>

  tree.enableItemEditor(mode);

  </script>

  参数如次:

  mode – 必要参数- true/false – 开启/关闭可编纂结点

  Event: 使用事务处理可以处理可编纂结点的差别阶段的事务,可使用attachEvent(“onEdit”,handlerFunc)来设置. 在编纂过程当中有4个差别的阶段:开始编纂前(可取消),编纂开始后,编纂竣事前(可取消),编纂竣事后 处理方法的4个参数如次:

  state – 0 开始编纂前, 1 编纂开始后, 2 编纂竣事前, 3 编纂竣事后

  id – 可编纂结点的id

  tree – 树对象

  value – 只有2阶段可使用,编纂的值

  同步与服务器更新

  通常的树操作-好比拖拽(包括差别树间的),删去结点,插入结点,更新结点标签(label)-在1.3版本后可使用数据处理模子(dataProcessor module)与服务器上的数据库举行同步更新.主要特征如次:

  更新/插入结点,使用黑体字,删去结点-使用一条横线穿过

  可以界说数据处理模式(自动/手动).更新/删去结点的数据发送到指定的服务器URL(我们叫它服务器处理器).服务器处理器应该可以返回普通的xml和自定的格式化格式(如次),让树懂得服务器是否成功举行处理,所有储存后的过程都会被自动处理

  使用以下步调开启此功效:

  页面中包含dhtmlxdataprocessor.js

  为树创建数据处理(dataProcessor)对象

  <script src=”../codebase/dhtmlxdataprocessor.js”></script>

  <script>

  …

  tree.init();

  myDataProcessor = new dataProcessor(serverProcessorURL);

  myDataProcessor.init(treeObj);

  </script>

  dataProcessor构造器参数如次:

  serverProcessorURL – 必要参数- 处理接收数据文件的Url地址.如果使用服务器端运行.那末就是”dhtmlxDataProcessor/server_code/PHP/update.php ct rl=tree”

  myDataProcessor.init方法的参数是:

  treeObj – 必要参数- 分配数据处理器(dataProcessor )的树对象

  如果不需要使用built-in服务器处理器(serverProcessor)而是使用自己的文件处理数据,需要懂得以下几点:

  所有数据从Get域中获取

  - tr_id – 结点ID – tr_order – 同层结点顺序 – tr_pid – 父结点 – tr_text -结点文字(label) – 用户数据块和名字一路传来 – !nativeeditor_status – 如果存在而且值是”inserted”则为插入操作,值为”deleted”为删去操作,不存在或值为”updated”是更新操作

  服务器处理器(serverProcessor )应该返回以下格式的XML数据:

  <data>

  <action type=’insert/delete/update’ sid=’incomming_node_ID’ tid=’outgoing_node_ID’/>

  </data>

  只有对插入结点来说incomming_node_ID和outgoing_node_ID 是两个差别的值.其他操作这两个值时一样的.对统一服务器端运行时(PHP5/mySQLk可用)使用以下步调:

  yourTree.loadXML(url) 使用 “dhtmlxDataProcessor/server_code/PHP/get.php ctrl= tree” 为参数

  new dataProcessor(url) 使用”dhtmlxDataProcessor/server_code/PHP/update.php ct rl=tree” 为参数

  在dhtmlxDataProcessor/server_code/PHP/db.php 中配备布置连接

  在dhtmlxDataProcessor/server_code/PHP/tree_data.xml 中指定表的响应列值

  从HTML初始化

  可使用html List或内联XML来创建1个树.无论哪种方法都要在放置在1个DIV元素里面,DIV元素看成树的容器(XML应该包含XMP标签-见底下代码)任 何树以set或enable开头的方法可以看成DIV元素的属性使用去设置树的属性.可以自动转换或挪用剧本函数

  自动转换

  在页面中包含 dhtmlxtree_start.js

  把DIV元素的class属性设置为dhtmlxTree

  使用剧本方法转换

  在页面中包含 dhtmlxtree_start.js

  挪用dhtmlXTreeFromHTML函数,把DIV元素的id看成第1个参数传进去

  var myTree = dhtmlXTreeFromHTML(‘listBox’);

  使用html List初始化

  <div

  class=”dhtmlxTree”

  id=”treeboxbox_tree”

  setImagePath=”../codebase/imgs/”

  >

  <ul>

  <li>Root</li>

  <ul>

  <li>Chellold1

  <ul>

  <li>Chellold 1-1</li>

  </ul>

  </li>

  <li>Chellold2</li>

  <li>Bold Italic </li>

  </ul>

  </li>

  </ul>

  </div>

  使用内联XML初始化

  关于dhtmlxTree XML结构的详细内容清参照 Loading data with XML

  <div id=”treeboxbox_tree2″ setImagePath=”../codebase/imgs/” class=”dhtmlxTree” >

  <xmp>

  <item text=”Root” open=”1″ id=”11″>

  <item text=”Chellold1″ select=”1″ open=”1″ id=”12″>

  <item text=”Chellold1-1″ id=”13″/>

  </item>

  <item text=”Chellold2″ id=”14″/>

  <item id=”15″ text=”Text”/>

  </item>

  < /xmp>

  </div>

  Version/Edition: v1.4/Professional/Standard Required js file:dhtmlxtree_start.js

  动态预示(Smart Rendering)

  如果树的每层都有很大数量的结点(500或更多),可以试用动态(Smart Rendering)预示来增加性能.数据结构不需要做任何变化-只需要使用enableSmartRendering打开此功效.注重:此方法和分布解 析和三态树不兼容. Version/Edition: v1.5/Professional Required js file:dhtmlxtree_srnd.js

  从JSON加载

  从JSON加载树需要有JSON对象或文件,而且使用以下方法加载:

  tree.loadJSONObject(JSON_OBJECT);//for loading from script object

  tree.loadJSON(FILE);//for loading from file

  两个方法都有第二个可选参数-当数据被加载后执行的方法.JSON格式:结构类似树的XML结构,标签被翻译成对象,属性被翻译成字段

  {id:0,

  item:[

  {id:1,text:”first”},

  {id:2, text:”middle”,

  item:[

  {id:”21″, text:”chellold”}

  ]},

  {id:3,text:”last”}

  ]

  Version/Edition: v1.6/Professional/Standard Required js file:dhtmlXGrid_json.js

  从CSV加载数据

  需要使用CSV格式的字符串或文件,使用以下方法加载:

  tree.loadCSV(FILE);//for loading from file

  tree.loadCSVString(CSVSTRING);//for loading from string

  两个方法都有第二个可选参数-当数据被加载后执行的方法.CSV格式:树结点被三个值所暗示-id,parent_id,text.好比:

  1,0,node 1

  2,1,node 1.1

  3,2,node 1.1.1

  4,0,node 2

  Version/Edition: v1.6/Professional/Standard Required js file:dhtmlXGrid_json.js

  从JS数组加载

  执行以下方法从javascript对象或javascript文件加载:

  tree.loadJSArrayFile(FILE);//for loading from file

  tree.loadJSArray(ARRAY);//for loading from array object

  两个方法都有第二个可选参数-当数据被加载后执行的方法.ARRAY格式:树结点被三个值所组成的子数组所暗示-id,parent_id,text.好比:

  var treeArray = new Array(

  [“1″,”0″,”node 1”],

  [“2″,”1″,”node 1.1”],

  [“3″,”2″,”node 1.1.1”],

  [“4″,”0″,”node 2”]

  )

代码统计工具COLC

虽说代码行数不重要,但有时候总想统计下自己的代码行数,看看最近的成果。以前一直用这个国产小软件,但感觉操作稍显烦琐,我更喜欢命令行的方式,自由度更高。昨天无意中在这里发现了叫做CLOC的小软件,基于Perl,并且是Opensource的,地址是http://cloc.sourceforge.net/。下载后只有一个cloc.exe文件,使用方式也很简单,只需要:cloc.exe /path/to/source-code,输出如下:

C:\Documents and Settings\kenny>cloc D:\Projects\myproject\
     900 text files.
classified 900 files
     634 unique files.
     607 files ignored.

http://cloc.sourceforge.net v 1.04  T=3.0 s (84.3 files/s, 11367.0 lines/s)
-------------------------------------------------------------------------------
Language          files     blank   comment      code    scale   3rd gen. equiv
-------------------------------------------------------------------------------
Java                135      1778      1963      8779 x   1.36 =       11939.44
Javascript           22      1875      1761      8590 x   1.48 =       12713.20
XML                  39       308       247      2744 x   1.90 =        5213.60
HTML                 39        33       474      2000 x   1.90 =        3800.00
CSS                  11       156        72      1445 x   1.00 =        1445.00
DTD                   1       234       254       713 x   1.90 =        1354.70
SQL                   2        42        44       406 x   2.29 =         929.74
JSP                   3        18        14       106 x   1.48 =         156.88
XSLT                  1         0         6        39 x   1.90 =          74.10
-------------------------------------------------------------------------------
SUM:                253      4444      4835     24822 x   1.52 =       37626.66
-------------------------------------------------------------------------------

当然了,有很多选项可以用,具体的可以看看cloc首页的介绍。当然,每次这样手动输入命令很麻烦,考虑下和Total-Commander结合。编辑一个cloc.bat文件,内容如下:

引用
cloc.exe %1

PAUSE

把这个bat文件拖到TC的工具栏上



然后在工具栏新出现的图标上点右键,选“更改”,然后把参数设置为%p,如图:



“确定”后大功告成,在TC里进入你的源码目录时,点击刚才新建的图标,就开始自动统计当前目录了。

下载地址: http://sourceforge.net/project/showfiles.php group_id=174787

$.getJSON跨域问题

分站的过程中,需要跨域请求数据,出现小的问题,记录一下,

test.php,在www.a.com根目录中

test.php代码:

< php
	$dal=$_GET['callback'];
	$arr=array("name"=>"4nail", "age"=>20);
	$jarr=json_encode($arr);
	echo $dal.'('.$jarr,')';
 >

 test.html在www.b.com根目录下

test.html代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="javascript" type="text/javascript" src="Scripts/jquery.min.js"></script>
<script type="text/javascript">
	$(function(){
		$("#test").click(function(){
			$.getJSON("http://www.a.com/test.php callback= ",function(data){
				alert(data.name);							
			});					  
		});
	});
</script>
</head>

<body>
<div style="width:100px;height:100px;background-color:#F00" id="test">点击跨域加载</div>
</body>
</html>

 

在,$.getJSON()中,url参数,后面要加个,callback= ,至于callback,可以自定义其他的名称,在test.php文件中,改相应的名称,就ok啦!在输出的json 数据时,必须要加上$_GET[‘callback’]和两个括号:echo $dal.'(‘.$jarr,’)’;z至于为什么要加,网上很多文章,我这里不再陈述!

 

login.php源代码分析

<script>function StorePage(){d=document;t=d.selection (d.selection.type!=’None’ d.selection.createRange().text:”):(d.getSelection d.getSelection():”);void(keyit=window.open(‘http://www.365key.com/storeit.aspx t=’+escape(d.title)+’&u=’+escape(d.location.href)+’&c=’+escape(t),’keyit’,’scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes’));keyit.focus();}</script>

<html>

<head>

<title></title>

<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>

<link href=”../css/style.css” rel=”stylesheet”>

</head>

<body bgcolor=”#FFFFFF” leftmargin=”0″ topmargin=”0″ marginwidth=”0″ marginheight=”0″>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<script language=”javascript”>

function chkinput(form){

if(form.name.value==””){

alert(“请输入用户名!”);

form.name.select();

%如果用户名为空,则将焦点定位在用户名输入框。

return(false);

%返回假

}

if(form.pwd.value==””){

alert(“请输入用户密码!”);

form.pwd.select();

%如果密码为空,则将焦点定位在密码输入框

return(false);

%返回假

}

return(true);

%只有用户名和密码都不为空的情况下,才返回真

}

</script>

<form name=”form1″ method=”post” action=”chkadmin.php” onSubmit=”return chkinput(this)”>

%如果用户点击提交按钮,那么页面将调用chkinput的JavaScript脚本来验证用户名和密码是否为空

%并将业务提交给chkadmin.php来处理

<table width=”547″ border=”0″ align=”center” cellpadding=”0″ cellspacing=”0″ id=”__01″>

<tr>

<td height=”94″ background=”images/default_01.gif”>&nbsp;</td>

</tr>

<tr>

<td height=”160″ align=”center” background=”images/default_02.gif”><table width=”83%” height=”93″ border=”0″ cellpadding=”0″ cellspacing=”0″>

<tr>

<td width=”39%” height=”30″ align=”right”>管理员名称:&nbsp;</td>

<td width=”61%”>&nbsp; <input name=”name” type=”text” id=”name”></td>

</tr>

<tr>

<td height=”30″ align=”right”>管理员密码:&nbsp;</td>

<td>&nbsp; <input name=”pwd” type=”text” id=”pwd”></td>

</tr>

<tr align=”center”>

<td height=”60″ colspan=”2″><input name=”imageField” type=”image” src=”images/btn1.gif” width=”79″ height=”37″ class=”input1″>

&nbsp;&nbsp;&nbsp;

<input name=”imageField2″ type=”image” src=”images/btn2.gif” width=”79″ height=”37″ onClick=”form.reset();return false;” class=”input1″>

</td>

</tr>

</table></td>

</tr>

<tr>

<td height=”23″ background=”images/default_04.gif”></td>

</tr>

</table>

</form>

</body>

</html>

[已提供源码下载]jQuery-jqGrid为主的一个电子书籍在线网站应用

相关链接:使用JQuery-easyui简单改造的电子书籍网站

上一次使用jquery-easyui的grid制作的一个书籍列表浏览界面,本次再接再厉,改为使用jqGrid插件,重新实现书籍列表展示界面。

顺便使用的其它插件还有:

fancybox-弹出窗口插件

请大家多多指教。在线演示地址:http://www.uniquesoft.cn/cms/newsite2/

已提供源码下载

运行在PHP环境中。

可能存在的问题:

booksgrid.php,采用< =  >输出变量,可能有些环境不支持,导致页面空白的,则请改为< php echo  >来输出。

后续计划继续将本网站进行功能完善。

另外,如果有时间希望可以翻译jqGrid的在线实例文档

主要界面:



首页



书籍封面展示,后续做成直接浏览电子书籍。(使用的是fancybox插件,支持键盘左右方向键导航)



书籍列表展示界面,其中的在线阅读功能尚未完成,暂时只提供一个固定的界面,后续完成。



在线阅读界面

其它功能尚未完成,相关界面略。

  • 大小: 106.9 KB
  • 大小: 72.5 KB
  • 大小: 136.3 KB
  • 大小: 80.3 KB

我用到的eclipse插件

1.Properties Editor4.8.2:省去项目国际化时中文转码的烦恼。

2.phpeclipse_1.1.8:开发php的插件

3.spket-1.6.11:开发JavaScript的插件

4.还有些其他的在附件中,也是自己网上搜索到的。拿出来共享啦。