dedecms和齐博cms中的ajax+php
- 格式:doc
- 大小:82.50 KB
- 文档页数:10
">
HTTP是无状态、单向的协议,用户只能够通过客服端向服务器发送请求并由服务器处理发回一个响应。
若要实现聊天室、WEBQQ、在线客服、邮箱等这些即时通讯的应用,就要用到“ 服务器推送技术(Comet)”。
传统的AJAX轮询方式,客服端以用户定义的时间间隔去服务器上查询最新的数据。
种这种拉取数据的方式需要很短的时间间隔才能保证数据的精确度,但太短的时间间隔客服端会对服务器在短时间内发送出多个请求。
反转AJAX,就是所谓的长轮询或者COMET。
服务器与客服端需要保持一条长时间的请求,它使得服务器在有数据时可以返回消息给客户端。
html:view plaincopy to clipboardprint?1.<div id="msg"></div>2.<input id="btn" type="button" value="测试" />javascript:这里使用AJAX请求data.php页面获得…success‟的值,请求的时间达到80秒。
在这80秒中若没有从服务端返回…success‟则一直保持连接状态,直到有数据返回或…success‟的值为0才关闭连接。
在关闭连接后在继续下一次的请求。
view plaincopy to clipboardprint?1.$(function(){2.3.4. $("#btn").bind("click",{btn:$("#btn")},function(evdata){5. $.ajax({6. type:"POST",7. dataType:"json",8. url:"data.php",9. timeout:80000, //ajax请求超时时间80秒10. data:{time:"80"}, //40秒后无论结果服务器都返回数据11. success:function(data,textStatus){12.//从服务器得到数据,显示数据并继续查询13.if(data.success=="1"){14. $("#msg").append("<br>[有数据]"+data.text);15. evdata.data.btn.click();16. }17.//未从服务器得到数据,继续查询18.if(data.success=="0"){19. $("#msg").append("<br>[无数据]");20. evdata.data.btn.click();21. }22. },23.//Ajax请求超时,继续查询24. error:function(XMLHttpRequest,textStatus,errorThrown){25.if(textStatus=="timeout"){26. $("#msg").append("<br>[超时]");27. evdata.data.btn.click();28. }29. }30.31. });32. });33.34.});PHP:在这里是无限的循环,循环的结束条件就是获取到了返回结果返回Json数据。
落叶之前在CHINAZ发布了一系列关于PHPCMS、织梦及帝国这三款CMS对比分析文章,在对比分析中出现过对PHPCMS部分功能和架构设计方式明显的偏好,一些站长朋友们在评论中多提到落叶在为PHPCMS捉刀的质疑。
本文中落叶详细分析下PHPCMS2008中一直存在的并且在sp4最终版中仍然存在的严重甚至低级的问题及一些使用中遇见的“见鬼”的问题。
A、低级问题/BUG:1.删除栏目时所有子栏目和子栏目下所有文章不作任何提示,直接删除。
一般的思路时,如果栏目下有子栏目,或者栏目下已经有多篇文章,删除时应该提示该栏目不允许删除,或者至少应该给出危险警告,结果PHPCMS中是一不小心,点删除栏目,然后弹出的JS中“是否要删除栏目”点了确定后,就一下子所有子栏目全部干掉了,这也意味着这些所有栏目下的文章也没办法显示了。
虽然可以根据PHPCMS中DATA目录下的栏目缓存中手动在数据库中找回这些栏目,但这个引起的麻烦自不待言了。
很多新技术员进来时,使用PHPCMS套站时,我都很明确的说明,PHPCMS后台不允许做任何删除操作,然而还是常有因为误点击而导致几十个子栏目及栏目因为这样的误点击全部消失的情况。
不过,落叶在新站规划时,一般都会修改PHPCMS栏目删除对应方法,删除前先查询栏目是否有子栏目,然后子栏目是否有文章,如果有需先删除文章,再删除子栏目,才能删除父栏目。
2.移动栏目后栏目关系字段没能正确更新,删除原栏目的父栏目,已经移走的子栏目会跟着被全部干掉落叶不止一次发生过这样的杯具,原来B栏目是A栏目的子栏目,后来想到B栏目独立出来做一级栏目更好,于是把B栏目修改为一级栏目,然后更新栏目缓存,修复栏目数据,心想这下应该没问题了,然后删掉A栏目,结果大杯具发生了,整个A栏目及B栏目以及B栏目以下的所有栏目跟着被删除了。
问题出现的原因:PHPCMS无限级分类每个分类中以arrchildid字段记录了所有子栏目的ID,当把B栏目称出后,PHPCMS程序中没能对B栏目的原父栏目的相关字段正常更新,结果删除A栏目时,遍历arrchildid中的所有子栏目,括B栏目,一起全部干掉了。
参数类型说明url 为string(因此要⽤引号引起来)发送请求的地址type string请求的⽅式:post或get请求。
默认为get请求data Object或string发送服务器的数据,键值对,字符串或对象,这⾥post请求有此参数,get请求直接在地址处?后⾯传参即可dataTypestring后端返回给前端的数据类型,⽐如html,xml,json。
本来是string,在ajax请求时设置dataType为json,将字符串;类型变为json类型succ ess function请求成功后调⽤的回调函数,需要操作的东西⼀般在这⾥写⽤法success:function(e 这个字母e可以是其他英⽂){写内容} 注意这个()⾥⾯的e或者说其他东西就是后端HttpResponse或者JsonResponse返回的东西,这⾥与dataType有关error function请求失败时调⽤的回调函数asyn c Boolean是否异步处理,默认为True,false为同步处理ajax--实现异步请求,接受响应及执⾏回调ajax最⼤的优点是在不重新加载整个页⾯的情况下,可以与服务器交换数据并更新部分⽹页的内容ajax指是⼀种创建交互式⽹页应⽤的⽹页开发技术,其实就是实现前后端交互。
1)ajax是异步javascript,异步的意思即⾮阻塞,就像线程,在代码运⾏到ajax请求时,它会分成两条线,⼀条线去运⾏ajax请求⾥⾯的内容,另⼀条线去运⾏主程序(即ajax请求后⾯的代码),当然我们可以因需要异步设置成同步(即在运⾏到ajax请求时,将阻塞运⾏完ajax请求后,再去运⾏ajax外,后⾯的代码)2)注意ajax请求是由jquery发起的,因此⽤于jquery代码块中。
3)执⾏相应的视图函数(这⾥是在⼀个py,php等⽂件中创建⼀个视图函数,或者class类,给这个视图函数分级设置⼀个url地址,ajax请求中的url即填写这个完整的url地址),返回json内容。
键字:当前位置:主页 > 常用函数/类参考 > 全局函数 >全局函数:1、common.func.php 公用函数获得当前的脚本网址function GetCurUrl()返回格林威治标准时间function MyDate($format='Y-m-d H:i:s',$timest=0)把全角数字转为半角function GetAlabNum($fnum)把含HTML的内容转为纯textfunction Html2Text($str,$r=0)把文本转HTMLfunction Text2Html($txt)输出Ajax头function AjaxHead()中文截取2,单字节截取模式function cn_substr($str,$slen,$startdd=0)把标准时间转为Unix时间戳function GetMkTime($dtime)获得一个 0000-00-00 00:00:00 标准格式的时间function GetDateTimeMk($mktime)获得一个 0000-00-00 标准格式的日期function GetDateMk($mktime)获得用户IPfunction GetIP()获取拼音以gbk编码为准function GetPinyin($str,$ishead=0,$isclose=1)dedecms通用消息提示框function ShowMsg($msg,$gourl,$onlymsg=0,$limittime=0)保存一个cookiefunction PutCookie($key,$value,$kptime=0,$pa="/")删除一个cookiefunction DropCookie($key)获取cookiefunction GetCookie($key)获取验证码function GetCkVdValue()过滤前台用户输入的文本内容// $rptype = 0 表示仅替换 html标记// $rptype = 1 表示替换 html标记同时去除连续空白字符// $rptype = 2 表示替换 html标记同时去除所有空白字符// $rptype = -1 表示仅替换 html危险的标记function HtmlReplace($str,$rptype=0)获得某文档的所有tagfunction GetTags($aid)过滤用于搜索的字符串function FilterSearch($keyword)处理禁用HTML但允许换行的内容function TrimMsg($msg)获取单篇文档信息function GetOneArchive($aid)本栏相关文档:共0页/0条记录Copyright 2005-2009 DedeCms本手册内容由DedeCms官方制作,本站保留内容版权,但允许进行转载键字:当前位置:主页 > 常用函数/类参考 > 数据库类 >数据库类:系统会自动载入 dedesql.class.php 文件,并用$dsql = $db = new DedeSql(false);进行初始化数据库连接,因此在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作,为了防止错误,操作完后不必关闭数据库。
如果你使用的dedecms v5.5 ,可能会遇到出错提示,语句为:DedeTag Engine Create File False,下面整理收集了最全面的解决办法,并详细探讨了其成因,希望能对你有所助益.原因:要创建的目录或者文件没有写入权限解决办法:第一步,定位出错的文件,即查找生成什么文件时出的问题。
方法:修改include/dedetag.class.php文件,搜索"DedeTag Engine Create File False",会找到以下代码$fp = @fopen($filename,"w") or die("DedeTag Engine Create File False");修改成$fp = @fopen($filename,"w") or die("DedeTag Engine Create File False:$filename");重新生成栏目或者文档时,即可提示当前文件信息。
第二步,找到提示错误的目录或者文件,检查是否有写入权限,windows服务器请给予写入权限,linux 服务器请给予777权限。
如果目录或者文件不存在,请手工建立。
常见的错误情况有,data目录没有写入权限,html静态文件目录没有写入权限,index.html首页静态文件没有写入权限。
警告:此修改操作可能会暴露程序目录结构信息,建议解决问题以后,还原程序文件。
请问DedeTag Engine Create File False怎么办?这个提示一般出现以下情况才会出现:1.模板文件不存在,您可能误删除或者没有正确指定模板文件;2.模板文件没有读取权限,请按照我们的系统环境配置需求正确分配目录的权限。
DedeTag Engine Create File False 错误汇总及解决方法恺撒洋芋花DEDECMS, DEDETAG, Engine by 恺撒洋芋花[tr][td]DedeTag Engine Create File False这个错误总是会被很多的新手遇到并且无从下手.其实问题很简单,你只要设置一下文件夹权限为777或者是文件权限为777就好了在很多时候,如果我们更新文档都会出现提示说DedeTag Engine Create File False,这时候,可以有两个方式进行解决,1.在ftp删除所要更新的旧文档.2.将文件夹权限和文件权限全部设置为777,记住点击应用哦!再有问题的时候可以看提示信息的,或者说,看下面的一些介绍与总结.DEDE可以说是最容易上手的CMS。
pbootcms ajax调用内容pbootCMS是一款基于PHP开发的内容管理系统,它提供了许多便捷的功能和特性,包括AJAX调用内容功能。
AJAX是一种适用于网络应用程序的技术,它可以让网页在不重新加载的情况下,实现和服务器的交互和数据传输,以增强用户的交互性和体验。
在pbootCMS中,AJAX调用可以用于实现多种功能,如动态刷新数据、异步验证、局部刷新等等。
下面我们就来看看如何在pbootCMS中使用AJAX调用内容。
1、AJAX调用文章列表要实现AJAX调用文章列表,我们需要首先获取文章列表的数据。
可以通过调用CMS核心框架类pc_base中的M()方法实现。
如下所示:```php$category_id = 1; // 栏目ID$pagesize = 10; // 每页显示数量$page = 1; // 当前页数$article_model = new article($category_id);$article_list = $article_model->get_list($pagesize, $page, '');```上述代码中,我们先定义了栏目ID、每页显示数量和当前页数等变量,然后创建article模型对象,调用该对象的get_list()方法,获取文章列表数据。
get_list()方法包含三个参数,分别为每页显示数量、当前页数和额外查询条件,其中额外查询条件可以为空。
该方法返回的是一个数组,包含当前页的文章列表数据。
接下来,我们需要将获取到的数据转化为JSON格式,以便浏览器在接收到响应后能够直接将数据展示出来。
可以使用PHP内置的json_encode()函数实现:```php$article_json = json_encode($article_list);```最后,我们将JSON格式的数据返回给浏览器即可。
可以通过CMS核心框架类pc_base 中的ajaxReturn()方法实现:上述代码中,ajaxReturn()方法包含三个参数,分别为返回状态、提示信息和返回数据,其中状态为1表示成功,提示信息可以为空,返回数据为上一步中转化后的JSON格式数据。
thinkphp中ajax与php响应过程详解本⽂实例分析了thinkphp中ajax与php响应过程。
分享给⼤家供⼤家参考。
具体分析如下:⼀般将前台页⾯搜索结果中,不喜欢的内容(链接),删除掉,因为整个⽹站的编程框架式thinkphp,运⽤js中的ajax对页⾯进⾏响应,调⽤后台php接⼝,实现前台和后台数据库的同时更新.⾸先我们需要做的就是在前台页⾯中添加⼀个⽂本“删除”,可以这么添加:复制代码代码如下:<a href="javascript:void(0);" id= "<php>echo $val[id]</php>" class="delete" >删除</a>上⾯的html代码的意思:就是给删除添加⼀个href,这个href是个js函数,类似于超链接的作⽤,当然对于我这样的新⼿在刚开始的时候会有疑惑,我们平时的超链接不是这样的,⽹页中很多的javascript:void(0),那程序怎么知道⽤户点击删除后,会响应其真正对应的js函数呢?别急,这就是为什么会为删除添加id以及class这样的标签,相信我把js中的代码公布出来以后你就会明⽩了,代码如下:复制代码代码如下:jQuery(".list a.delete").click(function(){if(confirm("你确定要删除吗?")){var _this=this;var id = jQuery(_this).attr("id");jQuery.ajax({url : '/Search/index.php/Jason/delete?',data : {'id':id},dataType : 'json',success : function(data){var del = data.del;if(del == 1){//删除成功jQuery("#"+id).parents(".list").remove();}else{//删除失败alert("删除失败");}}});}});⼤家看函数的头部:jQuery(".list a.delete").click(),jQuery后⾯的标签是很重要的,这就保证了jquery很准确的响应页⾯中⽤户点击的“位置”,添加的事件为click(),在click⾥添加响应事件的代码:var id = jQuery(_this).attr("id");获取a对应的id,因为这个id 是我们删除数据库时⽤到的链接id,当然这种直接明⽂的⽅式不好,在这⾥只是介绍整个响应过程。
国内三大CMS评测1.Dedecms框架:采用XML名字空间风格核心模板:模板全部使用文件形式保存,对用户设计模板、网站升级转移均提供很大的便利,健壮的模板标签为站长DIY 自己的网站提供了强有力的支持。
高效率标签缓存机制:允许对类同的标签进行缓存,在生成HTML的时候,有利于提高系统反应速度,降低系统消耗的资源。
模型与模块概念并存:在模型不能满足用户所有需求的情况下,DedeCMS推出一些互动的模块对系统进行补充,尽量满足用户的需求。
结构比较容易扩展。
也比较容易可以二次开发模板:模板制作还算简单,至少不用特别需要编程语言,配合dw插件理论上能够做出全部你想要的样式,不过个人感觉dede的文档太不详细,尤其是底层模板字段每个字段的意义没有指明,一上来很难悟出每个字段的意义数据承载能力:dede的数据承载能力并不好,最新版本对这几个问题进行了解决但还是相对较弱。
SEO能力:感觉是所有cms里seo做的最好的,自由列表模板,每个页面可自由定制,目录自定义,二级域名无限绑定子目录,dede批量文章管理我觉得是做的最好的,关键词自动生成(虽然容易被k),很多地方都体现出seo的好处。
采集能力:dede自带的采集能力不太行,很多东西都采不到,列表缩略图这些最新的功能都没有,但第三方的采集对他支持的都比较好,火车et都是很不错的。
服务支持:dede服务有待提高,论坛人气很旺,但是都是问问题的,没什么解决问题的实质内容,满坛子都是新手,很少看blt上论坛,毕竟blt兄是利用业余时间维护dede。
2.ECMS(Empire cms)框架:提供了系统扩展框架,可以直接在后台通过新建表、自定义字段,然后组成新的系统模型,以实现各种适合用户自己的系统。
如下载系统、音乐系统、商城系统、产品库、分类信息等等......同时,此功能可将信息量分配于不同的信息表,为数据量较大的网站进行数据部署。
这中功能可以深入研究一下,这对于网站的维护时很好用的。