帝国cms二次开发AJAX验证标题是否重复
2020-04-10 站长 站长日志
帝国cms后台发信息最怕点击提交后,提示标题重复又要重新写一遍。现在给大家分享一款实时验证标题的方法,这样就可以避免出现重复的信息。
帝国CMS-AJAX验证标题是否重复方法
1、帝国cms后台 - 管理数据表 - 找到自己使用的数据表 - 修改title字段 - 输入表单使用下面的代码
找到代码
<inputtype=textname=titlevalue="<?=ehtmlspecialchars(stripSlashes($r[title]))?>"size="60">
替换为
<inputtype=textname=titlevalue="<?=ehtmlspecialchars(stripSlashes($r[title]))?>"size="60"onblur="checkTitle()">
在输入表单最下面加入如下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<script type= "text/javascript" src= "http://apps.bdimg.com/libs/jquery/1.9.0/jquery.min.js" ></script> <script type= "text/javascript" > functioncheckTitle() { varclassid=<?= $_GET [classid]?>; varid=<?= $_GET [classid]?>; vartit=document.add.title.value; console.log( "我是标题=" +tit); console.log( "我是classid=" +classid); console.log( "我是id=" +id); $.ajax({ url: 'ReTitleAjax.php?classid=' +classid+ '&id=' +id+ '&title=' +tit, dataType: "json" , cache: false, error: function (){ alert( "检测失败,请重试" ); }, success: function (data){ if (data==1){ alert( '重复标题' ); } if (data==0){ //alert('可以添加信息'); console.log( "可以添加信息" ); } } }); } </script> |
接着新建一个php文件,保存在 /e/admin/ReTitleAjax.php ,代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
define( 'EmpireCMSAdmin' , '1' ); require ( "../class/connect.php" ); require ( "../class/db_sql.php" ); require ( "../class/functions.php" ); requireLoadLang( "pub/fun.php" ); require ( "../data/dbcache/class.php" ); $link =db_connect(); $empire =newmysqlquery(); $editor =1; //验证用户 $lur =is_login(); $logininid = $lur [ 'userid' ]; $loginin = $lur [ 'username' ]; $loginrnd = $lur [ 'rnd' ]; $loginlevel = $lur [ 'groupid' ]; $loginadminstyleid = $lur [ 'adminstyleid' ]; $classid =(int) $_GET [ 'classid' ]; $id =(int) $_GET [ 'id' ]; $title =AddAddsData( $_GET [ 'title' ]); $where = '' ; if ( $id ) { $where = ' and id<>' . $id ; } //已审核 $num = $empire ->gettotal( "select count(*) as total from {$dbtbpre}ecms_" . $class_r [ $classid ][tbname]. " where title='" . addslashes ( $title ). "'" . $where . " limit 1" ); //未审核 if (emptyempty( $num )) { $num = $empire ->gettotal( "select count(*) as total from {$dbtbpre}ecms_" . $class_r [ $classid ][tbname]. "_check where title='" . addslashes ( $title ). "'" . $where . " limit 1" ); } echojson_encode( $num ); |
上面是采用post查询返回json结果的方式来实现查重,我们还可以通过get方式,js函数如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<script type= "text/javascript" > functioncheckTitle() { varclassid= '<?=$_GET[classid]?>' ; varid= '<?=$_GET[id]?>' ; vartit=document.add.title.value; varanswerurl= 'ReTitleAjax.php' ; $.get(answerurl+ "?classid=" +classid+ '<?=$ecms_hashur[' ehref ']?>&title=' +tit, function (data){ if (data){ if (data==1){ $( "#titletips" ).html( "<font color='red'>已经存在此名称,请检查是否已经添加过</font>" ); } else { $( "#titletips" ).html( "<font color='green'>可以添加信息</font>" ); } returnfalse; } else { $( "#titletips" ).html( "<font color='red'>检测失败,请重试</font>" ); } }); } </script> |
接着在title字段的input后放一个容器用于存储提示信息,例如<span id="titletips"></span>,还可以通过在出现重复时禁用其他input输入等方式来限制,这里只是给出原理,大家可在此基础上发挥。