ホームページ >バックエンド開発 >PHPチュートリアル >php+ajax を使用して記事を自動的に保存する方法、_PHP チュートリアル

php+ajax を使用して記事を自動的に保存する方法、_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:10:33783ブラウズ

記事を自動的に保存するphp+ajaxメソッド

この記事の例ではphp+ajaxを使って記事を自動保存する方法を説明しています。参考のためにみんなで共有してください。具体的な分析は次のとおりです:

php+ajax 記事の自動保存方法は、主にユーザーの利便性とユーザー エクスペリエンスを向上させるために、csdn と同様に、ユーザーのデータを自動的に保存するために使用されます。事故が起きても編集したデータが失われることはありません

これは下書きの自動保存の中核の一部です

autosavetime(sec) この関数はタイミングを開始するために使用されます

clearTimeout(自動保存タイマー);

document.getElementById('autosavetimebox').innerHTML=sec+"秒"; ページ内の autosavetimebox オブジェクトを取得し、それにカウントダウンを書き込みます


コードをコピー コードは次のとおりです:
if(sec>0) {
autosavetimer = setTimeout("autosavetime("+sec+"-1)",1000); //ここで sec>0 の場合、autosavetime 関数は最初の 1 秒間に 1 回実行され、sec-1 の値が autosavetimebox に書き込まれます
} その他 {
var title=document.getElementById('title'); if(title.value!=''){
autosave_post(); }その他{
document.getElementById('autosavetimebox').innerHTML='保存する必要はありません'; }
}

この部分は sec>0 の条件が成立していない場合です (笑)、secphpコードは次のとおりです:


コードをコピーします

コードは次のとおりです:

var userAgent = navigator.userAgent.toLowerCase();
var is_opera = (userAgent.indexOf('opera') != -1);
var is_saf = ((userAgent.indexOf('applewebkit') != -1) || (navigator.vendor == 'Apple Computer, Inc.'));
var is_webtv = (userAgent.indexOf('webtv') != -1);
var is_ie = ((userAgent.indexOf('msie') != -1) && (!is_opera) && (!is_saf) && (!is_webtv));
var is_ie4 = ((is_ie) && (userAgent.indexOf('msie 4.') != -1));
var is_moz = ((navigator.product == 'Gecko') && (!is_saf));
var is_kon = (userAgent.indexOf('konqueror') != -1);
var is_ns = ((userAgent.indexOf('compatibility') == -1) && (userAgent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_saf));
var is_ns4 = ((is_ns) && (parseInt(navigator.appVersion) == 4));
var is_mac = (userAgent.indexOf('mac') != -1);
if ((is_ie & !is_ie4) || is_moz || is_saf || is_opera)
{
    varallowajax=1;
}その他{
    varallowajax=0;
}
var xmlHttp = false;
function makeSendData(postData,url,functionName,httptype) {
 
var posturl=url;
{
を試してください    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} キャッチ (e) {
   {
を試してください      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
   } キャッチ (e2) {
     xmlHttp = false;
   }
}
if (!xmlHttp && XMLHttpRequest のタイプ != '未定義') {
   xmlHttp = 新しい XMLHttpRequest();
}
 
if (!xmlHttp) {
        alert('XMLHTTP リクエストを送信できません');
        false を返します。
}
 
// 提交表的方式
xmlHttp.open(httptype, posturl, true);
 
//表单提交が完了した後、イベントを触発します
var changefunc="xmlHttp.onreadystatechange = "+関数名;  ///////ボブより
eval (changefunc);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
xmlHttp.send(postData);
}
関数 autosave_post()
{
    var title=document.getElementById('title').value;
    var content = window.frames["Editor"].window.frames["HtmlEditor"].document.getElementsByTagName("BODY")[0].innerHTML;
    var postTime=document.getElementById('postTime').value;
    if(allowajax==1)
    {
        content=postencode(コンテンツ);
        タイトル=郵便番号(タイトル);
        var post="title="+title+"&content="+content+"&postTime="+postTime+"";
        var url="ajax.php?act=autosave";
        makeSendData(post,url,'自動保存','POST');
    }
}
関数 autosave()
{
    if(xmlHttp.readyState == 4)
    {
        if(xmlHttp.status == 200)
        {
            var autoresponse=xmlHttp.responseText;
            var automessage=document.getElementById('autosavetimebox');
            if(autoresponse.indexOf("")!=-1)
            {
                automessage.innerHTML='您还没有添写信息,不用保存草稿';
                false を返します。
            }
            if(autoresponse.indexOf("")!=-1)
            {
                automessage.innerHTML='保存成功,予期せぬ発生時に草稿をダウンロードできる';
                finddraft();
            }
        }
    }
}
関数 finddraft()
{
    if(allowajax==1)
    {
        var url="ajax.php?act=loaddraft";
        makeSendData(null,url,'loaddraft','POST');
    }
}
関数ロードドラフト()
{
    vardraftbox=document.getElementById('draft');
    if(xmlHttp.readyState     {
        draftbox.innerHTML='草稿入中...';
    }
    if(xmlHttp.readyState == 4)
    {
        if(xmlHttp.status == 200)
        {
            draftbox.innerHTML=xmlHttp.responseText;
        }
    }
}
関数クリアドラフト()
{
    if(allowajax==1)
    {
        var url="ajax.php?act=cleardraft";
        makeSendData(null,url,'nodraft','POST');
    }
}
関数 nodraft()
{
    vardraftbox=document.getElementById('draft');
    if(xmlHttp.readyState     {
        draftbox.innerHTML='ダウンロード入中...';
    }
    if(xmlHttp.readyState == 4)
    {
        if(xmlHttp.status == 200)
        {
            draftbox.innerHTML=xmlHttp.responseText;
        }
    }
}
//文字列をエンコードします
関数 postencode (str) {
    str=encodeURIComponent(str);
    if (is_moz) str=str.replace(/%0A/g, "%0D%0A"); //ボブから
    文字列を返します。
}

自動保存のjs代码,代码如下:
复制代码代码如下:
var autosavetimer;
関数自動保存時間(秒) {
   クリアタイムアウト(自動保存タイマー);
   document.getElementById('autosavetimebox').innerHTML=sec+"秒";
   if(秒>0) {
       autosavetimer = setTimeout("autosavetime("+sec+"-1)",1000);
   }その他{
       var blogtitle=document.getElementById('title');
       if(blogtitle.value!=''){
           autosave_post();
       }その他{
           document.getElementById('autosavetimebox').innerHTML='不用保存';  
       }
   }
}
関数 starttimer()
{
    var starttime=document.getElementById('autosavetimebox').innerHTML;
    if(starttime=='保存成功,您可在発生予期せぬ時刻に草稿をダウンロード' || starttime=='您还没有添写信息,不用保存草稿')
    {
        開始時間='60';
    }その他{
        starttime=starttime.replace('秒','');
    }
    var autosavefunbox=document.getElementById('autosavefunbox');
    autosavefunbox.innerHTML='停止時間';
    開始時間==0 ?開始時間 = 60 : 開始時間 = 開始時間;
    自動保存時間(開始時間);
}
関数 stoptimer()
{
    var autosavefunbox=document.getElementById('autosavefunbox');
    autosavefunbox.innerHTML='开始计時間';
    クリアタイムアウト(自動保存タイマー);
}

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/935485.html技術記事 php+ajaxを使って記事を自動保存する方法 この記事ではphp+ajaxを使って記事を自動保存する例を説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです: php+ajax の記事...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。