{"id":212,"date":"2006-08-28T09:48:42","date_gmt":"2006-08-28T01:48:42","guid":{"rendered":"http:\/\/www.xujiwei.com\/blog\/?p=212"},"modified":"2010-01-29T21:17:09","modified_gmt":"2010-01-29T13:17:09","slug":"ajax-autosave-draft","status":"publish","type":"post","link":"https:\/\/xujiwei.com\/blog\/2006\/08\/ajax-autosave-draft\/","title":{"rendered":"AJAX\u5e94\u7528\u4e4b\u8349\u7a3f\u81ea\u52a8\u4fdd\u5b58"},"content":{"rendered":"<p>\u76f8\u4fe1\u7528\u8fc7Gmail\u7684\u4eba\u90fd\u77e5\u9053Gmail\u6709\u4e00\u4e2a\u8349\u7a3f\u81ea\u52a8\u4fdd\u5b58\u7684\u529f\u80fd\uff0c\u6bcf\u8fc7\u4e00\u6bb5\u65f6\u95f4\uff0cGmail\u90fd\u4f1a\u81ea\u52a8\u4fdd\u5b58\u90ae\u4ef6\u8349\u7a3f\uff0c\u8fd9\u6837\u5728\u4e00\u4e9b\u7a81\u53d1\u60c5\u51b5\u4e0b\u5c31\u80fd\u5feb\u901f\u5730\u6062\u590d\u5de5\u4f5c\uff0c\u514d\u5f97\u5199\u4e86\u534a\u5929\u7684\u90ae\u4ef6\u7728\u773c\u4e4b\u95f4\u5c31\u6ca1\u6709\u4e86\u3002\u5728\u5b66\u4e86AJAX\u4e4b\u540e\uff0c\u6211\u4e5f\u7ed9\u81ea\u5df1\u7684blog\u52a0\u4e0a\u4e86\u8fd9\u4e2a\u529f\u80fd\u3002\u5f53\u7136\uff0c\u8fd9\u4e2a\u5e94\u7528\u5e76\u4e0d\u53ea\u9650\u4e8eblog\u4e0a\uff0c\u5e94\u8be5\u8bf4\u8fd8\u662f\u6bd4\u8f83\u901a\u7528\u7684\u3002<\/p>\n<p>PS.\u4e3a\u4e86\u5f00\u53d1\u7684\u65b9\u4fbf\uff0c\u6211\u7528\u4e86\u4e00\u4e2a\u81ea\u5df1\u5199\u7684AJAX\u7c7b\uff0c<a rel=\"external\" href=\"http:\/\/www.xujiwei.cn\/blog\/blogview.asp?logID=541\">\u5177\u4f53\u5185\u5bb9\u548c\u4e0b\u8f7d\u5728\u8fd9\u91cc<\/a>\u3002<\/p>\n<p><a rel=\"external\" href=\"http:\/\/www.xujiwei.cn\/demo\/ajaxautosave\/\">\u6f14\u793a\u5730\u5740<\/a><\/p>\n<p>\u4ecd\u65e7\u4ee5\u4ee3\u7801\u52a0\u6ce8\u91ca\u7684\u65b9\u5f0f\u6765\u8bf4\u660e\u600e\u4e48\u7f16\u5199\u3002<\/p>\n<p>\u9996\u5148\u662f\u8868\u5355\u586b\u5199\u9875\u9762\uff0c\u7528\u4e00\u4e2aID\u4e3aAutoSaveMsg\u7684DIV\u6765\u663e\u793a\u8fd4\u56de\u4fe1\u606f\uff0c\u5e76\u4e14\u7528\u4e00\u4e2aID\u4e3aDraft_AutoSave\u7684CheckBox\u6765\u786e\u5b9a\u662f\u5426\u8fdb\u884c\u81ea\u52a8\u4fdd\u5b58\uff0c\u7136\u540e\u5c06Textarea\u7684ID\u547d\u540d\u4e3amessage\u3002\u540c\u65f6\u4e3a\u4e86\u5e94\u5bf9\u591a\u7528\u6237\u540c\u65f6\u4f7f\u7528\u7684\u9700\u8981\uff0c\u52a0\u4e0a\u7528\u6237\u540d\uff0c\u6bcf\u4e2a\u7528\u6237\u7684\u8349\u7a3f\u5206\u5f00\u4fdd\u5b58\u3002\u4e3a\u4e86\u8bf4\u660e\u65b9\u4fbf\uff0c\u6211\u628a\u4e00\u4e9b\u4fee\u9970\u6027\u7684\u4e1c\u897f\u53bb\u6389\uff0c\u8fd9\u6837\u770b\u8d77\u6765\u6bd4\u8f83\u660e\u4e86\uff1a<\/p>\n<div class=\"codeHead\">\u7a0b\u5e8f\u4ee3\u7801\uff1a<a href=\"javascript:CopyText($('CODE_7408'));\">[ \u590d\u5236\u4ee3\u7801\u5230\u526a\u8d34\u677f ]<\/a><\/div>\n<div id=\"CODE_7408\" class=\"codeMain\">\n<ul>\n<li>AJAX\u5e94\u7528\u4e4b\u8349\u7a3f\u81ea\u52a8\u4fdd\u5b58&lt;br\u00a0\/&gt;<\/li>\n<li>&lt;!--\u00a0\u7528\u6237\u540d\u9ed8\u8ba4\u4e3aNONAME\u00a0--&gt;<\/li>\n<li>\u7528\u6237\u540d\uff1a&lt;input\u00a0type=\"text\"\u00a0name=\"memName\"\u00a0id=\"memName\"\u00a0size=\"20\"\u00a0value=\"NONAME\"\u00a0\/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;<\/li>\n<li>&lt;!--\u00a0\u5728\u81ea\u52a8\u4fdd\u5b58\u9009\u9879\u7684onclick\u4e8b\u4ef6\u4e2d\u8c03\u7528\u81ea\u52a8\u4fdd\u5b58\u72b6\u6001\u8bbe\u7f6e\u51fd\u6570\u00a0--&gt;<\/li>\n<li>&lt;input\u00a0onclick=\"SetAutoSave();\"\u00a0type=\"checkbox\"\u00a0id=\"Draft_AutoSave\"\u00a0value=\"1\"\u00a0checked=\"true\"\u00a0\u00a0\/&gt;\u81ea\u52a8\u4fdd\u5b58\uff1f&lt;br\u00a0\/&gt;<\/li>\n<li>\u5185\u5bb9\uff1a<\/li>\n<li>&lt;textarea\u00a0id=\"message\"&gt;&lt;\/textarea&gt;&lt;br\u00a0\/&gt;<\/li>\n<li>&lt;!--\u00a0AutoSaveMsg\u663e\u793a\u8fd4\u56de\u4fe1\u606f\u00a0--&gt;<\/li>\n<li>&lt;div\u00a0id=\"AutoSaveMsg\"&gt;&lt;\/div&gt;<\/li>\n<li>&lt;input\u00a0type=\"submit\"\u00a0value=\"\u63d0\u4ea4\u5185\u5bb9\"\u00a0\/&gt;&amp;nbsp;&amp;nbsp;<\/li>\n<li>&lt;!--\u00a0\u8c03\u7528\u51fd\u6570\u6062\u590d\u6700\u540e\u4fdd\u5b58\u7684\u8349\u7a3f\u00a0--&gt;<\/li>\n<li>&lt;input\u00a0type=\"button\"\u00a0onclick=\"AutoSaveRestore();\"\u00a0value=\"\u6062\u590d\u6700\u540e\u4fdd\u5b58\u7684\u8349\u7a3f\"\u00a0\/&gt;<\/li>\n<li>&lt;\/div&gt;<\/li>\n<li>&lt;\/div&gt;<\/li>\n<li>&lt;!--\u00a0\u5c06JS\u4ee3\u7801\u653e\u5728\u6240\u6709\u5bf9\u8c61\u4e4b\u540e\uff0c\u4ee5\u514d\u5728\u9875\u9762\u672a\u52a0\u8f7d\u5b8c\u6210\u65f6\u51fa\u73b0\u5bf9\u8c61\u4e0d\u5b58\u5728\u7684\u9519\u8bef\u00a0--&gt;<\/li>\n<li>&lt;!--\u00a0AJAX\u7c7b\u00a0--&gt;<\/li>\n<li>&lt;script\u00a0type=\"text\/javascript\"\u00a0src=\"ajaxrequest.js\"&gt;&lt;\/script&gt;<\/li>\n<li>&lt;!--\u00a0\u81ea\u52a8\u4fdd\u5b58\u4ee3\u7801\u00a0--&gt;<\/li>\n<li>&lt;script\u00a0type=\"text\/javascript\"\u00a0src=\"autosave.js\"&gt;&lt;\/script&gt;<\/li>\n<\/ul>\n<\/div>\n<p>\u63a5\u4e0b\u6765\u662fautosave.js<\/p>\n<div class=\"codeHead\">\u7a0b\u5e8f\u4ee3\u7801\uff1a<a href=\"javascript:CopyText($('CODE_2125'));\">[ \u590d\u5236\u4ee3\u7801\u5230\u526a\u8d34\u677f ]<\/a><\/div>\n<div id=\"CODE_2125\" class=\"codeMain\">\n<ul>\n<li>\/\/\u00a0\u9996\u5148\u8bbe\u7f6e\u5168\u5c40\u53d8\u91cf<\/li>\n<li>\/\/\u00a0\u8981\u4fdd\u5b58\u7684\u5185\u5bb9\u5bf9\u8c61FormContent<\/li>\n<li>var\u00a0FormContent=document.getElementById(\"message\");<\/li>\n<li>\/\/\u00a0\u663e\u793a\u8fd4\u56de\u4fe1\u606f\u7684\u5bf9\u8c61<\/li>\n<li>var\u00a0AutoSaveMsg=document.getElementById(\"AutoSaveMsg\");<\/li>\n<li>\/\/\u00a0\u7528\u6237\u540d<\/li>\n<li>var\u00a0memName=document.getElementById(\"memName\").value;<\/li>\n<li>\/\/\u00a0\u81ea\u52a8\u4fdd\u5b58\u65f6\u95f4\u95f4\u9694<\/li>\n<li>var\u00a0AutoSaveTime=60000;<\/li>\n<li>\/\/\u00a0\u8ba1\u65f6\u5668\u5bf9\u8c61<\/li>\n<li>var\u00a0AutoSaveTimer;<\/li>\n<li>\/\/\u00a0\u9996\u5148\u8bbe\u7f6e\u4e00\u6b21\u81ea\u52a8\u4fdd\u5b58\u72b6\u6001<\/li>\n<li>SetAutoSave();<\/li>\n<li>\/\/\u00a0\u81ea\u52a8\u4fdd\u5b58\u51fd\u6570<\/li>\n<li>function\u00a0AutoSave()\u00a0{<\/li>\n<li> \/\/\u00a0\u5982\u679c\u5185\u5bb9\u6216\u7528\u6237\u540d\u4e3a\u7a7a\uff0c\u5219\u4e0d\u8fdb\u884c\u5904\u7406\uff0c\u76f4\u63a5\u8fd4\u56de<\/li>\n<li> if(!FormContent.value||!memName)\u00a0return;<\/li>\n<li> \/\/\u00a0\u521b\u5efaAJAXRequest\u5bf9\u8c61\uff0c\u8be6\u7ec6\u4f7f\u7528\u89c1\u6587\u7ae0\u5f00\u59cb\u7684\u94fe\u63a5<\/li>\n<li> var\u00a0ajaxobj=new\u00a0AJAXRequest;<\/li>\n<li> ajaxobj.url=\"autosave.asp\";<\/li>\n<li> ajaxobj.content=\"memname=\"+escape(memName)+\"&amp;postcontent=\"+escape(FormContent.value);<\/li>\n<li> ajaxobj.callback=function(xmlObj)\u00a0{<\/li>\n<li> \/\/\u00a0\u663e\u793a\u53cd\u9988\u4fe1\u606f<\/li>\n<li> AutoSaveMsg.innerHTML=xmlObj.responseText;<\/li>\n<li> }<\/li>\n<li> ajaxobj.send();<\/li>\n<li>}<\/li>\n<li>\/\/\u00a0\u8bbe\u7f6e\u81ea\u52a8\u4fdd\u5b58\u72b6\u6001\u51fd\u6570<\/li>\n<li>function\u00a0SetAutoSave()\u00a0{<\/li>\n<li> \/\/\u00a0\u662f\u5426\u81ea\u52a8\u4fdd\u5b58\uff1f<\/li>\n<li> if(document.getElementById(\"Draft_AutoSave\").checked==true)<\/li>\n<li> \/\/\u00a0\u662f\uff0c\u8bbe\u7f6e\u8ba1\u65f6\u5668<\/li>\n<li> AutoSaveTimer=setInterval(\"AutoSave()\",AutoSaveTime);<\/li>\n<li> else<\/li>\n<li> \/\/\u00a0\u5426\uff0c\u6e05\u9664\u8ba1\u65f6\u5668<\/li>\n<li> clearInterval(AutoSaveTimer);<\/li>\n<li>}<\/li>\n<li>\/\/\u00a0\u6062\u590d\u6700\u540e\u4fdd\u5b58\u7684\u8349\u7a3f<\/li>\n<li>function\u00a0AutoSaveRestore()\u00a0{<\/li>\n<li> \/\/\u00a0\u521b\u5efaAJAXRequest\u5bf9\u8c61<\/li>\n<li> var\u00a0ajaxobj=new\u00a0AJAXRequest;<\/li>\n<li> \/\/\u00a0\u63d0\u793a\u7528\u6237\u6b63\u5728\u6062\u590d<\/li>\n<li> AutoSaveMsg.innerHTML=\"\u6b63\u5728\u6062\u590d\uff0c\u8bf7\u7a0d\u5019\u2026\u2026\"<\/li>\n<li> ajaxobj.url=\"autosave.asp\";<\/li>\n<li> ajaxobj.content=\"action=restore&amp;memname=\"+escape(memName);<\/li>\n<li> ajaxobj.callback=function(xmlObj)\u00a0{<\/li>\n<li> \/\/\u00a0\u63d0\u793a\u7528\u6237\u6062\u590d\u6210\u529f<\/li>\n<li> AutoSaveMsg.innerHTML=\"\u6062\u590d\u6700\u540e\u4fdd\u5b58\u6210\u529f\";<\/li>\n<li> \/\/\u00a0\u5982\u679c\u5185\u5bb9\u4e3a\u7a7a\u5219\u4e0d\u6539\u5199textarea\u7684\u5185\u5bb9<\/li>\n<li> if(xmlObj.responseText!=\"\")\u00a0{<\/li>\n<li> \/\/\u00a0\u6062\u590d\u8349\u7a3f<\/li>\n<li> FormContent.value=xmlObj.responseText;<\/li>\n<li> }<\/li>\n<li> }<\/li>\n<li> ajaxobj.send()<\/li>\n<li>}<\/li>\n<\/ul>\n<\/div>\n<p>\u6700\u540e\u662fautosave.asp\uff0c\u7528\u4e8e\u5728\u540e\u53f0\u4fdd\u5b58\u8349\u7a3f\uff1a<\/p>\n<div class=\"codeHead\">\u7a0b\u5e8f\u4ee3\u7801\uff1a<a href=\"javascript:CopyText($('CODE_6600'));\">[ \u590d\u5236\u4ee3\u7801\u5230\u526a\u8d34\u677f ]<\/a><\/div>\n<div id=\"CODE_6600\" class=\"codeMain\">\n<ul>\n<li>&lt;%@LANGUAGE=\"VBscript\"\u00a0CODEPAGE=\"65001\"%&gt;<\/li>\n<li>&lt;%\u00a0Option\u00a0Explicit\u00a0%&gt;<\/li>\n<li>&lt;%<\/li>\n<li>'\u00a0\u8bed\u8a00\u4e3aVBScript\uff0c\u7f16\u7801\u4e3aUTF-8\uff0c\u8981\u6c42\u53d8\u91cf\u58f0\u660e<\/li>\n<li>'\u00a0\u51fa\u73b0\u9519\u8bef\u5219\u5ffd\u7565\uff0c\u7ee7\u7eed\u6267\u884c<\/li>\n<li>On\u00a0Error\u00a0Resume\u00a0Next<\/li>\n<li>'\u00a0\u5b9a\u4e49\u4e00\u4e9b\u53d8\u91cf<\/li>\n<li>Dim\u00a0PostContent,memName,action,objStream<\/li>\n<li>'\u00a0\u83b7\u53d6\u64cd\u4f5c\uff0c\u662f\u4fdd\u5b58\u8349\u7a3f\u8fd8\u662f\u6062\u590d\u8349\u7a3f<\/li>\n<li>action=Request.Form(\"action\")<\/li>\n<li>'\u00a0\u83b7\u53d6\u7528\u6237\u540d<\/li>\n<li>memName=Request.Form(\"memname\")<\/li>\n<li>'\u00a0\u83b7\u53d6\u8349\u7a3f\u5185\u5bb9<\/li>\n<li>PostContent=Request.Form(\"postcontent\")<\/li>\n<li>IF\u00a0action=\"restore\"\u00a0Then<\/li>\n<li> '\u00a0\u6062\u590d\u8349\u7a3f\uff0c\u5982\u679c\u7528\u6237\u540d\u4e0d\u4e3a\u7a7a\u5219\u8fdb\u884c\u6062\u590d\u64cd\u4f5c<\/li>\n<li> IF\u00a0memName&lt;&gt;Empty\u00a0Then<\/li>\n<li> '\u00a0\u4f7f\u7528\u00a0ADODB.Stream\u00a0\u6765\u8fdb\u884c\u6587\u4ef6\u64cd\u4f5c<\/li>\n<li> Set\u00a0objStream\u00a0=\u00a0Server.CreateObject(\"ADODB.Stream\")<\/li>\n<li> With\u00a0objStream<\/li>\n<li> .Type\u00a0=\u00a02<\/li>\n<li> .Mode\u00a0=\u00a03<\/li>\n<li> .Open<\/li>\n<li> '\u00a0\u6587\u4ef6\u540d\u4e3a\u00a0autosave_\u00a0+\u00a0\u7528\u6237\u540d\u00a0+\u00a0.txt<\/li>\n<li> .LoadFromFile(Server.MapPath(\"autosave_\"&amp;memName&amp;\".txt\"))<\/li>\n<li> .Charset\u00a0=\u00a0\"utf-8\"<\/li>\n<li> '.Position\u00a0=\u00a00<\/li>\n<li> PostContent\u00a0=\u00a0.ReadText()<\/li>\n<li> .Close<\/li>\n<li> End\u00a0With<\/li>\n<li> Set\u00a0objStream\u00a0=\u00a0NoThing<\/li>\n<li> '\u00a0\u8f93\u51fa\u8349\u7a3f<\/li>\n<li> IF\u00a0PostContent&lt;&gt;\"\"\u00a0Then\u00a0Response.Write(PostContent)<\/li>\n<li> End\u00a0IF<\/li>\n<li>Else<\/li>\n<li> '\u00a0\u4fdd\u5b58\u8349\u7a3f\uff0c\u5982\u679c\u8349\u7a3f\u5185\u5bb9\u548c\u7528\u6237\u540d\u5747\u4e0d\u4e3a\u7a7a\u5219\u8fdb\u884c\u4fdd\u5b58\u64cd\u4f5c<\/li>\n<li> IF\u00a0PostContent&lt;&gt;Empty\u00a0AND\u00a0memName&lt;&gt;Empty\u00a0Then<\/li>\n<li> '\u00a0\u4f7f\u7528\u00a0ADODB.Stream\u00a0\u6765\u8fdb\u884c\u6587\u4ef6\u64cd\u4f5c<\/li>\n<li> Set\u00a0objStream\u00a0=\u00a0Server.CreateObject(\"ADODB.Stream\")<\/li>\n<li> With\u00a0objStream<\/li>\n<li> .Type\u00a0=\u00a02<\/li>\n<li> .Mode\u00a0=\u00a03<\/li>\n<li> .Open<\/li>\n<li> .Charset\u00a0=\u00a0\"utf-8\"<\/li>\n<li> .Position\u00a0=\u00a0objStream.Size<\/li>\n<li> .WriteText=\u00a0PostContent<\/li>\n<li> .SaveToFile\u00a0Server.MapPath(\"autosave_\"&amp;memName&amp;\".txt\"),2<\/li>\n<li> .Close<\/li>\n<li> End\u00a0With<\/li>\n<li> Set\u00a0objStream\u00a0=\u00a0NoThing<\/li>\n<li> '\u00a0\u8f93\u51fa\u4fdd\u5b58\u662f\u5426\u6210\u529f\u4fe1\u606f<\/li>\n<li> If\u00a0Err.Number=0\u00a0then<\/li>\n<li> Response.Write(\"\u6700\u540e\u4e8e\u00a0\"&amp;Now()&amp;\"\u00a0\u81ea\u52a8\u4fdd\u5b58\u6210\u529f\")<\/li>\n<li> Else<\/li>\n<li> Response.Write(\"\u6700\u540e\u4e8e\u00a0\"&amp;Now()&amp;\"\u00a0\u81ea\u52a8\u4fdd\u5b58\u5931\u8d25\uff0c\u9519\u8bef\u53f7\uff1a\"&amp;Err.Number&amp;\"\uff0c\u9519\u8bef\u63cf\u8ff0\uff1a\"&amp;Err.Dscription)<\/li>\n<li> End\u00a0If<\/li>\n<li> End\u00a0IF<\/li>\n<li>End\u00a0IF<\/li>\n<li>%&gt;<\/li>\n<\/ul>\n<\/div>\n<p>\u81f3\u6b64\uff0cAJAX\u8349\u7a3f\u81ea\u52a8\u4fdd\u5b58\u5b8c\u6210\u4e86\u3002<\/p>\n<p class=\"articletags\">\n","protected":false},"excerpt":{"rendered":"<p>\u76f8\u4fe1\u7528\u8fc7Gmail\u7684\u4eba\u90fd\u77e5\u9053Gmail\u6709\u4e00\u4e2a\u8349\u7a3f\u81ea\u52a8\u4fdd\u5b58\u7684\u529f\u80fd\uff0c\u6bcf\u8fc7\u4e00\u6bb5\u65f6\u95f4\uff0cG &hellip;<\/p>\n<p class=\"read-more\"><a href=\"https:\/\/xujiwei.com\/blog\/2006\/08\/ajax-autosave-draft\/\">\u7ee7\u7eed\u9605\u8bfb &raquo;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[11],"tags":[68,18,28],"_links":{"self":[{"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/posts\/212"}],"collection":[{"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/comments?post=212"}],"version-history":[{"count":0,"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/posts\/212\/revisions"}],"wp:attachment":[{"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/media?parent=212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/categories?post=212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xujiwei.com\/blog\/wp-json\/wp\/v2\/tags?post=212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}