·设为首页收藏本站📧邮箱修改🎁免费下载专区💎积分✅卡密📒收藏夹👽聊天室
返回列表 发布新帖

Discuz!X 源码分析之 ajaxget() 函数

135 0
发表于 2023-7-24 18:43:35 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
函数简介:ajaxget() 函数与 ajaxpost() 一样,都是是 Discuz!X 系统中很重要的函数,是 Discuz!X 系统中 实现 Ajax 功能的重要组成部分,在整个源码中有上百次调用,掌握 ajaxget 的工作原理和使用方法对于理解 Discuz!X 系统的 Ajax 机制和针对 Discuz!X 系统的二次开发都将大有裨益。下文将为您讲解 ajaxpost 的工作原理。

函数原型:function ajaxget(url, showid, waitid, loading, display, recall)
所属文件:common.js

参数说明及示例关键代码:
url:(必填)请求的url;
showid:(必填)ajax 返回信息显示区域的 id;
waitid:ajax 请求过程中显示等待信息区域的 id;默认与showid相同
loading:在等待区域显示的提现信息,比如:“请稍后...”
display:信息返回后 showId 的 style.display 值,就是指定返回信息是否显示的
recall:信息返回后执行的代码。

ajaxget() 函数在整个 Discuz!X 中有很多处调用!粗略统计了一下,ajaxget() 和 ajaxpost() 均有100多处调用!在模版文件中一般是直接调用,在js文件中一般是间接调用。

最简单的 ajaxget() 调用的例子就是用户登录以后,在用户名后面那个“切换在线状态”的功能!即登录后处于在线状态,点击“在线”后,就切换到“隐身”状态,在点击“隐身”则又可以切换回“在线”状态。代码如下:
  1. <span id="loginstatus">    <a id="loginstatusid" href="member.php?mod=switchstatus" title="切换在线状态" onclick="ajaxget(this.href, 'loginstatus');return false;" class="xi2">在线</a></span>
复制代码

1、当用户点击“在线”的时候,将触发调用 ajaxget(),而标签 A 是不会跳转,因为 onclick 事件获得了一个 false的返回值!

2、进入 ajaxget() 函数内部处理流程,第一步便是创建 Ajax 对象!关于 Ajax 对象的更多内容,可以参考 Ajax() 函数过程。

3、设置好相关参数以后,ajaxget 调用 Ajax 对象方法 get(),执行流程将转入 Ajax.get() 执行!代码如下:
  1. x.get(url, function(s, x){...});
复制代码

url 是 ajaxget 提交的 url,根据 Ajax.get() 定义可知,当 Ajax 调用返回时,将调用 function(s,x);

4、进入 Ajax.get() 函数处理流程,服务器返回的 Ajax 信息将保存在对象中,并返回给 ajaxget 指定的函数,即 function(s,x);

5、在 function(s,x) 中,将首先将返回信息中的TEXT部分直接保存在 $('showid').innerHTML 中,然后将附带的 js 脚本添加到 <head> 部分并执行,完成动态修改在线状态,或者其他内容,添加的 js 脚本代码如下:
  1. <script type="text/javascript" id="cbbLYGtmoPqvpWrwoymULIJQFPrvolFH" charset="GBK">if(typeof succeedhandle_=='function') {succeedhandle_('http://localhost/forum.php', '隐身', {});}</script>
复制代码

ajaxget() 的核心内容,其实在 Ajax() 中,通过读源码,我们可以知道,其实 Ajax 还能实现 post 方式的交互,但是正如之前我们知道的,ajaxpost() 不是通过 Ajax() 来实现的,而是使用了 iframe 的方法!
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
创宇盾启航版免费网站防御网站加速服务
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.145.151.7,GMT+8, 2024-11-17 19:22 , Processed in 0.216499 second(s), 75 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2024 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表