我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何编写AJAX实现草稿自动保存

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何编写AJAX实现草稿自动保存

本篇内容主要讲解“如何编写AJAX实现草稿自动保存”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何编写AJAX实现草稿自动保存”吧!


仍旧以代码加注释来方式来说明怎么编写。

首先是表单填写页面,用一个ID为AutoSaveMsg的DIV来显示返回信息,并且用一个ID为Draft_AutoSave的CheckBox来确定是否进行自动保存,然后将Textarea的ID命名为message。同时为了应对多用户同时使用的需要,加上用户名,每个用户的草稿分开保存。为了说明方便,我把一些修饰性的东西去掉,这样看起来比较明了:

代码如下:


AJAX应用之草稿自动保存<br />
<!-- 用户名默认为NONAME -->
用户名:<input type="text" name="memName" id="memName" size="20" value="NONAME" />&nbsp;&nbsp;&nbsp;&nbsp;
<!-- 在自动保存选项的onclick事件中调用自动保存状态设置函数 -->
<input onclick="SetAutoSave();" type="checkbox" id="Draft_AutoSave" value="1" checked="true"  />自动保存?<br />
内容:
<textarea id="message"></textarea><br />
<!-- AutoSaveMsg显示返回信息 -->
<div id="AutoSaveMsg"></div>
<input type="submit" value="提交内容" />&nbsp;&nbsp;
<!-- 调用函数恢复最后保存的草稿 -->
<input type="button" onclick="AutoSaveRestore();" value="恢复最后保存的草稿" />
</div>
</div>
<!-- 将JS代码放在所有对象之后,以免在页面未加载完成时出现对象不存在的错误 -->
<!-- AJAX类 -->
<script type="text/javascript" class="lazy" data-src="ajaxrequest.js"></script>
<!-- 自动保存代码 -->
<script type="text/javascript" class="lazy" data-src="autosave.js"></script>


接下来是autosave.js

代码如下:


// 首先设置全局变量
// 要保存的内容对象FormContent
var FormContent=document.getElementById("message");
// 显示返回信息的对象
var AutoSaveMsg=document.getElementById("AutoSaveMsg");
// 用户名
var memName=document.getElementById("memName").value;
// 自动保存时间间隔
var AutoSaveTime=60000;
// 计时器对象
var AutoSaveTimer;

// 首先设置一次自动保存状态
SetAutoSave();

// 自动保存函数
function AutoSave() {
    // 如果内容或用户名为空,则不进行处理,直接返回
    if(!FormContent.value||!memName) return;
    // 创建AJAXRequest对象,详细使用见文章开始的链接
    var ajaxobj=new AJAXRequest;
    ajaxobj.url="autosave.asp";
    ajaxobj.content="memname="+escape(memName)+"&postcontent="+escape(FormContent.value);
    ajaxobj.callback=function(xmlObj) {
        // 显示反馈信息
        AutoSaveMsg.innerHTML=xmlObj.responseText;
    }
    ajaxobj.send();
}

// 设置自动保存状态函数
function SetAutoSave() {
    // 是否自动保存?
    if(document.getElementById("Draft_AutoSave").checked==true)
        // 是,设置计时器
        AutoSaveTimer=setInterval("AutoSave()",AutoSaveTime);
    else
        // 否,清除计时器
        clearInterval(AutoSaveTimer);
}

// 恢复最后保存的草稿
function AutoSaveRestore() {
    // 创建AJAXRequest对象
    var ajaxobj=new AJAXRequest;
    // 提示用户正在恢复
    AutoSaveMsg.innerHTML="正在恢复,请稍候……"
    ajaxobj.url="autosave.asp";
    ajaxobj.content="action=restore&memname="+escape(memName);
    ajaxobj.callback=function(xmlObj) {
        // 提示用户恢复成功
        AutoSaveMsg.innerHTML="恢复最后保存成功";
        // 如果内容为空则不改写textarea的内容
        if(xmlObj.responseText!="") {
            // 恢复草稿
            FormContent.value=xmlObj.responseText;
        }
    }
    ajaxobj.send()
}


最后是autosave.asp,用于在后台保存草稿:

代码如下:


<%@LANGUAGE="VBscript" CODEPAGE="65001"%>
<% Option Explicit %>
<%
' 语言为VBScript,编码为UTF-8,要求变量声明
' 出现错误则忽略,继续执行
On Error Resume Next

' 定义一些变量
Dim PostContent,memName,action,objStream

' 获取操作,是保存草稿还是恢复草稿
action=Request.Form("action")
' 获取用户名
memName=Request.Form("memname")
' 获取草稿内容
PostContent=Request.Form("postcontent")
IF action="restore" Then
    ' 恢复草稿,如果用户名不为空则进行恢复操作
    IF memName<>Empty Then
        ' 使用 ADODB.Stream 来进行文件操作
        Set objStream = Server.CreateObject("ADODB.Stream")
        With objStream
            .Type = 2
            .Mode = 3
            .Open
            ' 文件名为 autosave_ + 用户名 + .txt
            .LoadFromFile(Server.MapPath("autosave_"&memName&".txt"))
            .Charset = "utf-8"
            '.Position = 0
            PostContent = .ReadText()
            .Close
        End With
        Set objStream = NoThing
        ' 输出草稿
        IF PostContent<>"" Then Response.Write(PostContent)
    End IF
Else
    ' 保存草稿,如果草稿内容和用户名均不为空则进行保存操作
    IF PostContent<>Empty AND memName<>Empty Then
        ' 使用 ADODB.Stream 来进行文件操作
        Set objStream = Server.CreateObject("ADODB.Stream")
        With objStream
            .Type = 2
            .Mode = 3
            .Open
            .Charset = "utf-8"
            .Position = objStream.Size
            .WriteText= PostContent
            .SaveToFile Server.MapPath("autosave_"&memName&".txt"),2
            .Close
        End With
        Set objStream = NoThing
        ' 输出保存是否成功信息
        If Err.Number=0 then
            Response.Write("最后于 "&Now()&" 自动保存成功")
        Else
            Response.Write("最后于 "&Now()&" 自动保存失败,错误号:"&Err.Number&",错误描述:"&Err.Dscription)
        End If
    End IF
End IF
%>

到此,相信大家对“如何编写AJAX实现草稿自动保存”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何编写AJAX实现草稿自动保存

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Ajax如何实现页面自动刷新

这篇文章主要介绍了Ajax如何实现页面自动刷新,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Ajax简介:AJAX即“Asynchronous Javascript And
2023-06-08

ubuntu下如何编写shell脚本实现开机自动启动

这篇文章主要介绍“ubuntu下如何编写shell脚本实现开机自动启动”,在日常操作中,相信很多人在ubuntu下如何编写shell脚本实现开机自动启动问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ubunt
2023-07-04

Java如何实现properties文件动态修改并自动保存工具类

这篇文章主要为大家展示了“Java如何实现properties文件动态修改并自动保存工具类”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java如何实现properties文件动态修改并自动保存
2023-05-30

如何在SQL Server中实现自动编号

在SQL Server中可以通过使用自增主键列(identity column)来实现自动编号。具体步骤如下:在创建表时,在需要自动编号的列上设置为identity列,如下所示:CREATE TABLE TableName(ID INT
如何在SQL Server中实现自动编号
2024-06-04

如何实现Chrome浏览器的自动保存密码提示功能禁用

这篇文章主要介绍“如何实现Chrome浏览器的自动保存密码提示功能禁用”,在日常操作中,相信很多人在如何实现Chrome浏览器的自动保存密码提示功能禁用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何实现C
2023-06-08

linux中gedit文本编辑器如何设置自动保存文件内容

小编给大家分享一下linux中gedit文本编辑器如何设置自动保存文件内容,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!linux中有一款gedit文本编辑器,但
2023-06-10

Qt如何编写自定义控件实现抽奖转盘

本文小编为大家详细介绍“Qt如何编写自定义控件实现抽奖转盘”,内容详细,步骤清晰,细节处理妥当,希望这篇“Qt如何编写自定义控件实现抽奖转盘”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。具体代码如下#ifndef
2023-07-02

如何编写Shell脚本实现自动检测修改最快的Ubuntu软件源

这篇文章主要讲解了“如何编写Shell脚本实现自动检测修改最快的Ubuntu软件源”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何编写Shell脚本实现自动检测修改最快的Ubuntu软件源
2023-06-09

如何在Aurora中实现自动扩展存储功能

在Aurora中实现自动扩展存储功能,可以通过以下步骤:在AWS控制台中选择Aurora数据库实例,点击“实例操作”菜单下的“调整容量”选项。在“调整容量”页面中,可以选择“自动调整存储”选项,并设置最小存储容量和最大存储容量。在“自动
如何在Aurora中实现自动扩展存储功能
2024-04-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录