Ajax 陷阱(Ajax Gotchas)

在DZ上轻松实现AJAX简单两例 在DZ上轻松实现AJAX简单两例,这个是很好的原理代码。 立即下载
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> Ajax陷阱 Ajax is an awesome technology that is driving a new generation of web apps, from maps.google.com to colr.org to backpackit.com. But Ajax is also a dangerous technology for web developers, its power introduces a huge amount of UI problems as well as server side state problems and server load problems. Ajax是一项重要的技术,它将引领下一代web应用程序开发的风潮,从maps.google.com 到 colr.org 再到 backpackit.com ,处处充满了ajax的倩影。但是对于web开发者来说,ajax也是一项危险的技术,它的力量也导致了一大堆UI问题,如服务器端状态问题和服务器负载问题。 I've compiled a list of the many mistakes developers using Ajax often make. Javascript itself is a dangerous UI technology, but I've tried to keep the list to problems particular to Ajax development: 我编辑了一个开发者在使用ajax时经常犯的错误列表。Javascript本身就是一个危险的UI技术,但是我仍尽量使得这份列表只包含ajax开发中所遇到的问题,而剔除掉Javascript本身的问题。 Mistakes: 错误: Not giving immediate visual cues for clicking widgets. If something I'm clicking on is triggering Ajax actions, you have to give me a visual cue that something is going on. An example of this is GMail loading button that is in the top right. Whenever I do something in GMail, a little red box in the top right indicates that the page is loading, to make up for the fact that Ajax doesn't trigger the normal web UI for new page loading. 没有及时给出点击控件后的可视化提示信息。如果我点击的这个东西触发了ajax一个动作,那么你必须给我一个可视化的提示,告诉我有些动作正在执行。一个例子就是Gmail页面右上角的装载按钮(loading button)。无论何时,当我在Gmail中执行任何操作时,页面右上角的小红色按钮就会提示我,页面正在载入中。这样明显的向用户提示出你的动作,从而克服ajax不再重载页面而带来的用户不知操作是否进行的不便。 Coofucoo say: 习惯是可以培养的。就像用户用惯windows时,就会习惯那个“开始”按钮一样,尽管刚开始他们会问:“为什么我想关机,还要从‘开始’处开始呢?”。当大多数web用户习惯于页面刷新即意味着数据提交这一传统观念时,一旦你打破这种观念,你就一定要小心,尽量多的提示用户你当前的操作,用户就不至于感到莫名其妙,“到底这个该死的程序在干些什么??!!”。反面例子你可以在球球的blog中找到。 Breaking the back button The back button is a great feature of standard web site user interfaces. Unfortunately, the back button doesn't mesh very well with Javascript. Keeping back button functionality is a major reason not to go with a pure Javascript web app. Coofucoo say: 这是硬伤,似乎无解。我目前想到的解决办法就是在程序里自己提供一个后退按钮,来代替浏览器提供的按钮。不过这样恐怕又会加大工作量。 破坏后退按钮的功能。后退按钮时标准web用户界面的一个很重要的功能。但是不幸的是,后退按钮的功能与Javascript结合的并不好。保持后退按钮的功能也正是我们不采用纯粹Javascript web应用程序的原因。 Changing state with links (GET requests) As I've referenced in a previous posting, Ajax applications introduce lots of problems for users who assume GET operations don't change state. Not only do state changing links cause problems for robots, users who are accustomed to having links drive navigation can become confused when links are used to drive application state changes. 竟然用链接来转换状态?(GET方式发送请求)就像我前面提到的一样,对于一些认为GET操作不会变更状态的用户来说,ajax应用程序导致了许多问题。那些可以改变状态的链接不仅仅导致web应用程序使用习惯的变化,更容易使那些习惯的认为链接就是起导航最用的用户感到很困惑。 Coofucoo say: 感觉这个地方不好理解,解释一下。超级链接最原始的功能就是在页面之间进行切换,你由一个页面点击一个超链接,就会被带到另一个地方。之后超链接有所发展,可以采用GET方法向服务器发送一些数据,不过有些用户还是会认为超链接的功能就是起导航的作用。但是现在情况变化了,在ajax里,由于大量引入了Javascript事件,所以一个普通的超链接同样可以起到原先button才可以起到的作用,比如asp.net中的linkbutton。这样也许会功能更强大,但是却给部分用户带来了习惯和观念上的变更,就会引入问题。 Blinking and changing parts of the page unexpectedly The first A in Ajax stands for asynchronous. The problem with asynchronous messages is that they can be quite confusing when they are pop in unexpectedly. Asynchronous page changes should only ever occur in narrowly defined places and should be used judiciously, flashing and blinking in messages in areas I don't want to concentrate on harkens back to days of the html blink tag. 页面的某部分可能出乎意料的,一眨眼的就变化了。Ajax这组缩写字母中的第一个字母“A”就代表了“异步(asynchronous)”。异步的信息所带来的问题就是他们会悄无声息的执行,毫无征兆的突然弹出,让人感到非常迷惑。异步页面的变化部分应该被谨慎设计,明确说明,明智使用,提示的信息应该被放置在那些我不会全神贯注的地方,并且用例如blink标记这种技术让他闪烁起来。 Not using links I can pass to friends or bookmark Another great feature of websites is that I can pass URLs to other people and they can see the same thing that I'm seeing. I can also bookmark an index into my site navigation and come back to it later. Javascript, and thus Ajax applications, can cause huge problems for this model of use. Since the Javascript is dynamically generating the page instead of the server, the URL is cut out of the loop and can no longer be used as an index into navigation. This is a very unfortunate feature to lose, many Ajax webapps thoughtfully include specially constructed permalinks for this exact reason. 超链接变得毫无意义,不能在传递给朋友或者收藏了。另一个web站点的重要功能就是你可以将一个URL传递给另一个人,而他就可以通过这个URL看到你看到的东西。当然,我也可以将这个URL放到我的收藏夹里,以便我以后访问他。Javascript,包括基于Javascript的ajax技术将会对这种应用模式带来巨大的挑战。由于Javascript取代了服务器,用来动态的产生数据,所以URL就不能具体代表整个交互循环的某个状态点,也就不再能够收藏了。这方面的功能缺失非常令人遗憾,许多ajax web应用程序在这方面考虑的非常仔细,包括专门构造一个特殊的链接(permalinks)来应对此种情况。 Too much code makes the browser slow Ajax introduces a way to make much more interesting javascript applications, unfortunately interesting often means more code running. More code running means more work for the browser, which means that for some javascript intensive websites, especially poorly coded ones, you need to have a powerful CPU to keep the functionality zippy. The CPU problem has actually been a limit on javascript functionality in the past, and just because computers have gotten faster doesn't mean the problem has disappeared. 太多的代码让浏览器变得缓慢。Ajax带来了一种非常有趣的javascript应用程序,但是不幸的是,有趣也就意味着更多的代码在运行。更多的代码就意味着浏览器要做更多的工作,特别是有些不良的代码虽然加强了功能,却需要你有一个强劲的CPU去支持这些功能的实现。CPU不够强劲实际上是过去限制javascript功能的一个重要因素,而且即使当下的计算机已经变得越来越快,这个问题也并没有完全消失。 Inventing new UI conventions A major mistake that is easy to make with Ajax is: 'click on this non obvious thing to drive this other non obvious result'. Sure, users who use an application for a while may learn that if you click and hold down the mouse on this div that you can then drag it and permanently move it to this other place, but since that's not in the common user experience, you increase the time and difficulty of learning your application, which is a major negative for any application. 创造新的UI使用习惯。使用ajax很容易犯这样的错误:“想当然的要求用户去点击一个不明显的东西,然后再一个不明显的地方将结果返回给用户”。诚然,当一个用户使用你的程序一段时间,他就可以了解到,如果他将鼠标在一块区域上点击,并且保持按下的状态进行拖拽,就可以将这块区域永久的移动到另一个位置。但是这些经验并不是每个用户天生就知道的,如果你这么做,那么你就为你的用户学习使用你的应用程序增加了难度和时间,而这样的情况对于大多数应用程序来说都有极大的负面影响。 Not cascading local changes to other parts of the page Since Ajax/Javascript gives you such specific control over page content, it's easy to get too focused on a single area of content and miss the overall integrated picture. An example of this is the Backpackit title. If you change a Backpackit page title, they immediately replace the title, they even remember to replace the title on the right, but they don't replace the head title tag with the new page title. With Ajax you have to think about the whole picture even with localized changes. 当局部发生变化时,可能需要成串同步页面其他部分。从Ajax/Javascript赋予你控制(更改)页面具体内容的时候,就特别容易犯下只注重局部数据变化,而忘记在整个页面同步该变化的错误。一个例子就是Backpackit(www.backpackit.com)的标题。如果你执行了一个改变Backpackit页面的动作,标题会被立刻改变过来,甚至右边的标题也会被一起变化,但是他们忘记了为新页面同步位于<head>标签中的<title>标记。在ajax里,当你更改局部时,你需要考虑整个页面的同步问题。 Asynchronously performing batch operations Sure with Ajax you can make edits to a lot of form fields happen immediately, but that can cause a lot of problems. For example if I check off a lot of check boxes that are each sent asynchronously to the server, I lose my ability to keep track of the overall state of checkbox changes and the flood of checkbox change indications will be annoying and disconcerting. 分批异步执行操作带来的问题。确实,在ajax里你可以编辑许多不同的表单,并且表单会及时提交,但是这样也带来了许多问题。例如,我编辑了一些一些复选框,每个都可以异步的单独将数据提交给服务器,但是同时我却丧失了在整体上控制这些复选框状态的能力,并且每个复选框提交之后返回结果的提示信息也会变得非常令人讨厌。 Scrolling the page and making me lose my place Another problem with popping text into a running page is that it can effect the page scroll. I may be happily reading an article or paging through a long list, and an asynchronous javascript request will decide to cut out a paragraph way above where I'm reading, cutting my reading flow off. This is obviously annoying and it wastes my time trying to figure out my place. 另一个问题是,即时向一个正在运行的页面写入内容可能会导致页面滚动。我可能会比较喜欢阅读一篇全部显示出来的文章,尽管文章可能会很长。可是一个异步的javascript程序也许会将我所读过的部分丢掉,从而影响我的阅读。当我试图再次找回我之前阅读的位置时,这种机制会显得特别不方便。 In addition, some programming issues: 另外,还有些编程的问题: Be careful about what you expose on the server, especially if you're using remote-stub frameworks like SAJAX. You can't necessarily let Javascript use generic services that you might let a server-side script call. Don't rely on a global XMLHttpRequest object. See Call Tracking. Coofucoo say: 这个地方我没有翻译出来,对他描述的情况知道得不是很确切。哪位知道得拜托通知一下。 Be careful about changing the DOM in one call, such that when a later call returns, it ends up writing a value into the wrong DOM object - or perhaps the DOM object doesn't return at all (To be added to [[Call Tracking). 当你响应一个调用而更改DOM的内容时,一定要小心,如果此时稍后的一个调用返回,很可能会导致将数据写入错误的DOM对象中,或者可能导致对DOM对象的操作根本就不返回。 Consider the effects of a call never returning. You can establish a timeout mechanism by setting a timer as soon as the call is made (with Javascript's ontimeout function). The timer can explicitly call the request's abort() method if no return has occurred, and inform the user accordingly. 考虑调用没有返回的情况。你可以通过在函数调用后设置一个timer(用Javascript的ontimeout函数)来建立一个超时机制。如果没有返回的话,这个timer就可以明确地执行abort()(终止操作),并且通知用户。 Consider the effects of a call returning with an error status - perhaps alert the user somehow. A pattern like Synchronisation Status helps here, to alert the user that some data is stale. 考虑调用返回一个错误状态的情况,这种情况下可能会提示用户一些莫名其妙的信息。像Synchronisation Status这样的模式就可以在这里为我们提供帮助,警告用户有些数据已经出问题了。 Retrieved from "http://www.ajaxpatterns.org/Ajax_Gotchas" 引用地址:"http://www.ajaxpatterns.org/Ajax_Gotchas"
RK3568移植AP6256 本文主要是记录RK3568移植正基的AP6256的WIFIBT模块,感兴趣的朋友可以一起学习!!!提示:以下是本篇文章正文内容,下面案例可供参考。 阅读详情

相关推荐

AI驱动的iOS逆向工程自动化:14阶段工作流与Ghidra集成实践

逆向工程是软件安全分析的核心技术,通过反汇编、调试等手段解析程序内部逻辑与数据流。其原理在于将编译后的二进制代码还原为可理解的逻辑结构,从而发现潜在漏洞或理解软件行为。在移动安全领域,iOS逆向工程具有重要技术价值,能够用于安全审计、漏洞挖掘与恶意软件分析。传统iOS逆向依赖ipsw、class-dump、Frida等工具链组合,存在学习曲线陡峭与流程碎片化问题。本文介绍的ios-reverse-skills项目创新性地将14阶段逆向工程方法论封装为AI可调用的标准化脚本集,通过Ghidra脚本实现Swif

weixin_27268733的博客 434

Ajax Discuz

个人对AJAX的一些看法  提交时间: Nov 18, 2005 10:12:58 AM  加1分   引用  回复    发消息   现在AJAX很火,也不知道是为什么。可能是由于WEB表现力太差的原因吧,加上在GOOGLE上得到了充分的利用。于是乎,各厂商、开发团队、开发人员都迅速跟进,追随潮流。有人说WEB的出现使软件业至少倒退了10年,想想这话还是有点道理的。桌面软件丰富的表现力是

工作笔记 1372

vCenter6.7证书过期导致503报错的全面修复指南:从STS证书更新到SSL信任修复

本文详细解析了VMware vCenter 6.7因STS证书过期导致503服务不可用错误的根本原因,并提供了从诊断、更新STS证书到修复SSL信任链的完整解决方案。通过命令行工具检查证书状态,使用官方脚本更新过期STS证书,并利用lsdoctor工具修复深层SSL信任问题,最终指导用户使用certificate-manager彻底重置所有证书,帮助管理员快速恢复vCenter服务。

pz890123的博客 1293

ajax报错解决指南,ajax报错解决思路,ajax问题解决思路

ajax报错解决指南 1 跑起项目来,debug看能不能进入ajax请求的方法,如果能进入Controller那就说明没有问题,再检查有没有取到值,取不到值的话,就改一改后端 如果进不去Controller的方法,那就说明ajax有问题 2 如果确定是ajax的问题先检查一下jsp和Controller,看看基本的语法对不对,比如jsp写了几个3 语法没有问题就检查服务器有没有引入jquery框架,检查办法是把项目跑起来,在浏览器通过文件路径看是报404还是进入jquery 如果是报404的话,恰好是ssm

程序员小雨的博客 2361

打开UG会安装报错:initialization internal ERROR 的提示框,提示line 1344 of错误的解决方案

打开UG会安装报错:initialization internal ERROR 的提示框,提示line 1344 of错误的解决方案

Q82556499的博客 3521

嵌入式C开发必备:用Cursor规则搞定代码风格检查(附Pikachu项目实战)

本文以Pikachu开源项目为例,详细介绍了如何利用Cursor的AI代理规则系统,为嵌入式C开发项目配置一套完整的代码风格检查与规范执行方案。通过实战演示,指导开发者创建项目级规则,实现命名、格式、硬件抽象层及驱动开发的自动化规范,从而提升代码一致性、可维护性和团队协作效率。

weixin_29181861的博客 599

discuz ajaxpost函数解析

blog.csdn.net本帖含有隐含内容,如果您看不到相关代码请移步:http://www.bacysoft.cn/thread-88-1-1.html,成功注册为会员后方可访问完整内容! 函数简介:ajaxpost() 函数是 Discuz!X 系统中很重要的一个函数,是 Discuz!X 系统中 实现 Ajax 功能的重要组成部分,在整个源码中有上百次调用,掌握 ajaxpost

程序猿在武汉 4818

ZW3D 二次开发-制作插件

1.Windows 7 SP1 或 Windows 10 或 Windows 11(推荐 Windows 11)2.Visual studio 2017-2022 (或 C/C++的任何其他集成开发环境)(推荐 Visual studio 2022)3.ZW3D 2023 或以上版本(建议使用与 ZW3D 一致的 API 的版本)4.Qt5.9.7(for Windows)博主学习使用环境的是:Windows 11 Version 24H2 + Visual studio 2022 + Qt5.9.7(fo

fhqiwmc的博客 812

dz论坛 ajax请求,DISCUZ架构:AJAX之ajax.js 函数之二

有了这些理论的基础就可以分析一下ajax的具体实现了,下面就以注册过程中的检查用户名在数据库是不是存在并给用户提示这样一个ajax过程进行全程分析。用到如下的几个文件:以下为引用的内容:./register.php./ajax.php./include/javascript/common.js./include/javascript/ajax.js./template/default/regist...

weixin_32058239的博客 574

无人机——电机篇(一)

1. 电机的定义 电机俗称“马达”,是无人机的动力来源,无人机通过改变电机的转速来改变无人机的飞行状态。即改变每个电机的速度,使得无人机能够盘旋空中,上升或下降,或向各个方向移动。2. 电机的分类 电机分为:“无刷电机”和“有刷电机” - 无刷电机:是采用半导体开关器件来实现电子换向,具有可靠性高、低干扰、低噪声低、寿命长等优点。一般应用在稍大型的飞行器,载重大,可以有更广泛的用途。 - 有刷电机:是内含电刷装置的将电能转换成机械能(电动机)或将机械能转换成电能(发电机)的旋转电机。有刷电机是所有电机的基

weixin_46066938的博客 1万+

QT+Opencv实现视频流播放

1.流程 首先通过opencv打开视频流,获取到数据帧,然后将数据帧转换为QT可识别的图像,显示到QT界面上。 2.opencv解码线程源码 //DecodeOpencv.h #pragma once #include <QThread> #include <QObject> #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/img..

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 6459

[翻译]Ajax 陷阱(Ajax Gotchas)

Ajax GotchasAjax陷阱Ajax is an awesome technology that is driving a new generation of web apps, from maps.google.com to colr.org to backpackit.com. But Ajax is also a dangerous technology for web develo

心如止水--coofucoo的专栏 8805

ROS2 CANopen 使用教程

第一步是定义一个结构,用于保存有关接头和相关 CANopen 数据的信息。该结构是 CANopen 网络的基础,可确保存储所有相关数据并在需要时进行访问。

机器人控制与仿真应用 3690

转贴 [翻译]Ajax 陷阱(Ajax Gotchas)

  [翻译]Ajax 陷阱(Ajax Gotchas) Ajax Gotchas Ajax陷阱 Ajax is an awesome technology that is driving a new generation of web apps, from maps.google.com to colr.org to backpackit.com. ButA

枫在风中的专栏 872

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Ajax 陷阱(Ajax Gotchas)(偷来.net)

====================================================== 注:本文源代码点此下载 ====================================================== ajax is an awesome technology that is driving a new generation of web app

javazhuanzai的专栏 361

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

AJAX_DISCUZ showmessage()函数配合AJAX弹窗

discuz定义的函数showmessage()可以将弹窗以AJAX的方式弹出,首先要将模板文件中的表单按照格式编写按照格式编写. 下面以"积分转帐"页面介绍(转载请注明出处:http://blog.csdn.net/dabao1989/article/details/8307661) 模板文件

dabao1989的专栏 6660

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

discuz ajax返回html,DISCUZ架构:AJAX之ajax.js 函数之一

以下为引用的内容:var Ajaxs = new Array();function Ajax(recvType, statusId) {var aj = new Object();aj.statusId = statusId ? document.getElementById(statusId) : null;aj.targetUrl = '';aj.sendString = '';aj.recv...

weixin_35554306的博客 355

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

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

zgmu的专栏 1311

discuz ajax分页,Discuz! 分页函数及使用

该函数在 ./include/global.func.php 文件中定义。函数原型为:string multi(int $num, int $perpage, int $curpage, string $mpurl[, int $maxpages[, int $page[, bool $autogoto[, bool $simple]]]])$num: 总记录数$perpage: 每页记录数$cu...

weixin_39707941的博客 344

discuz分页函数改成基于jqueryd的ajax分页函数

/** *AJAX分页 *$num为总共的条数比如说这个分类下共有15篇文章 *$perpage为每页要显示的条数 *$curpage为当前的页数 *$url为请求路径, *$obj为html对象,返回给jqery处理 *$page为$multipage这个字符串中要显示的表示页数的变量个数 *$maxpages为最大的页数值此函数最后有一句$m...

weixin_33862993的博客 192

discuz 帖子内容页分页ajax点击加载更多(测试ing)

默认是普通的分页码,点击跳转。试过将列表页的ajax点击加载更多移植到内容页,发现没有js效果,还是跳转。现在从别的模板搬来一些代码,可以初步实现帖子内容页ajax点击加载效果。需要添加一些代码到viewthread.htm和viewthread_node.htm里。1.viewthread.htm,调用viewthread_node.htm的loop结束之后增加代码:...

u011423894的博客 242

discuz 手机版调用ajaxget、ajaxpost

discuz 如果要手机版调用ajaxget、ajaxpost 必须: 1. 引用 header_common.htm 中 如下js: var STYLEID = '{STYLEID}', STATICURL = '{STATICURL}', IMGDIR = '{IMGDIR}', VERHASH = '{VERHASH}', charset = '{CHARSET}', discuz_ui

cycandcyl的博客 1326

DZ登录时提示Ajax,Discuz! X3.1 判断会员登录状态及外部调用注册登录框的实现代码...

在帝国的html里加入html代码复制代码代码如下: 用户名 * 立即注册密码 * 找回密码 自动登录 QQ登录dfsafd23eedsafd@qq.com我的积分|我的礼包提醒|退出在discuz下写个zxf_userinfo.php放在discuz根目录就可以了复制代码代码如下:require './source/class/class_core.p...

weixin_35828357的博客 442

discuz论坛登陆信息外部调用的几种方法

方法1:discuz登陆框是ajax调用的,一开始在firebug下看到了调用了接口: http://home.ecjtu.net/member.php ?mod=logging&action=login&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login 1 http://h

日积月累的质变 9248

discuz ajax返回html,discuz中用到的javascript函数解析

discuz中用到的javascript函数解析 原创第2/2页原创 更新时间:2008年05月28日 22:26:14 原创作者:discuz中用到的js不论是多浏览器兼容性和实用性都是非常不错的,推荐大家看下functionajaxupdateevents(obj,tagName){tagName=tagName?tagName:'A';varobjs=obj....

weixin_39790760的博客 386

discuz 通过ajax动态获得的javascript不执行问题

今天在DZ X2.5开发中插件发现有个诡异的现象,在member/login.htm里钩子logging_input处插入了一段js代码,模板通过ajax被前台以弹出层形式调出(其实就是登录框弹出层),此时js正常执行,关闭弹出层,再一次弹出js就不执行了。 解决办法:在js标签上加上reload=1就OK了 //todo... 问题解决的同时了解到了dz 异步获

xiangzi1113的专栏 3137
上一篇: 使用GDB调试Linux软件
下一篇: Ajax原则
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值