議論asp.Netは機械cookieを通じて百度(google)をまねて検索input検索のヒントを実現してフレームを弾いて自分で積極的に

7136 ワード

ユーザによるキーワード入力に関する検索結果を自発的にポップアップするために,ここでは2つの異なるスキームについて2つのソリューションを挙げる.
一般的な方法は、ユーザー・データベースでリレーショナル・テーブルを検索することです.次に、ユーザー検索ボックスkeyword非同期呼び出しデータテーブルの関連データを入力します.隠しdivに表示されます.もう一つの方法は、私が今重点的に議論している方法です.単一のユーザに適用され、このユーザの従来の検索データに基づいて検索ヒント機能を実現する.技術的に重要なのは,ユーザの従来の検索データを記録し,クッキーに書き込み,ユーザ本体クッキーからページが呼び出されることである.OK、以下は本題に入ります.本文は主に実現手順を述べて、コードは自分の実際の必要に応じて変更することができます.

一、クッキーはどう書きますか?

はCookieを書き込むためです.彼の手順は主に3つのステップがあり、詳細は以下の通りです.
まず、HttpCookieオブジェクトを作成し、このオブジェクトによってCookieを構築します.このオブジェクトの名前は、後で生成されるCookie名です.
詳細は、次のようなコードです.
HttpCookie cookie = new HttpCookie("MyOnlyCookieName");//        Cookie  
は、作成されたHttpCookieオブジェクトのValue属性に文字列値を割り当て、Valueの値は後に生成されたCookieの値である.
例えば:MyNameCookie.Value=「ユーザーがCookieに値を付与する」もしあなたが書きたいCookieの数値が簡単な文字列ではなく、複雑なデータ型であるとしたら、これらのデータ型はCookieに直接保存できないことを知っています.Cookieには文字列しか保存できないからです.しかし、この複雑なデータ型を複数の文字列に変換し、この複数の文字列を同時に生成したCookie値に割り当てることで、Cookieの内容が豊富になり、今後Cookieを利用した機能も強くなります.
このとき、なぜWebserverを閲覧したのか、Webserverはあなたがいつ以前閲覧したのか、そして以前どのくらい滞在したのかなどの情報を知っているかもしれません.これらの情報は、あなたが初めてページを閲覧したとき、Webserverが生成したCookieに格納されています.次のコードは、Cookieに複数の文字列を格納する例です.
cookie [ "   " ] = "   ";
cookie [ "   " ] = "  ";
cookie [ "   " ] = " 26";
Cookieには一時的なものがあります.永遠もある.永続Cookieはファイル形式でコンピュータに保存され、Internet Explorerをオフにしてもコンピュータに保存されます.
このサイトに再度アクセスすると、Cookieを作成したサイトは読み取ることができます.詳細なプログラミングでは、このクッキーを書き込むときです.Cookieのライフサイクルを設定、詳細は、例えば、DateTime dtNow=DateTime.Now ; TimeSpan tsMinute = new TimeSpan ( 1 , 0 , 0 , 0 ) ; cookie . Expires = dtNow + tsMinute ; 以上のコードは、生成されたCookieのライフサイクルを「1日」に設定し、「TimeSpan」プロパティを変更することでCookieを生成する詳細なライフサイクルを設定することができます.OK、総合して.クッキー付きの操作コードは、例えば以下の通りである
public partial class cookieTest: System.Web.UI.Page
{
    string CookieKye = "jinWebCookies";
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void WriteCookie()
    {
        CookieKye = readCookie();
        HttpCookie cookie = new HttpCookie(CookieKye);//  cookie      Info  
        DateTime dt = DateTime.Now;//      
        TimeSpan ts = new TimeSpan(30, 0, 0, 0);//cookie      .
        cookie.Expires = dt.Add(ts);//      
        string searchKey=searchId.Text.Trim();
        cookie.Values.Add(searchKey, searchKey);//    
        Response.AppendCookie(cookie);//    cookie 
       
    }
    private string readCookie()
    {
        
        int i=0;
        while (i >= 0)
        {
            if (Request.Cookies[CookieKye+i] == null)
            {
                return CookieKye + i;
            }
            i++;
        }
        return "";
    }
    protected void demoCookie()
    {
        //  cookie
        if (Request.Cookies[CookieKye] != null)
        {
            string temp = Convert.ToString(Request.Cookies["Info"].Value);
            if (temp == "")
            {
                Response.Write(" ");
            }
            else
                Response.Write(temp);
        }
        else
        {
            Response.Write("error");
        }
        //  cookie
        Response.Cookies["Info"]["user"] = "2";
        Response.Cookies["Info"].Expires = DateTime.Now.AddDays(1);
        //  cookie    
        HttpCookie acookie = Request.Cookies["Info"];
        acookie.Values.Remove("userid");
        acookie.Expires = DateTime.Now.AddDays(1);
        Response.Cookies.Add(acookie);
        //    cookie,              
        int limit = Request.Cookies.Count - 1;
        for (int i = 0; i < limit; i++)
        {
            acookie = Request.Cookies[i];
            acookie.Expires = DateTime.Now.AddDays(-1);
            Response.Cookies.Add(acookie);
        }
    }
    protected void Unnamed1_Click(object sender, EventArgs e)
    {
        WriteCookie();
    }

二、OK。今はページ端のコード

ページ側ではjsでクッキーデータを読み出し、プロンプトボックスにデータを書き込む
まずjavascriptでコード
<script>
    var setSearchFlag;
    function showSearch(obj) {
        clearSearchFlag();
        var w3c = (document.getElementById) ? true : false; //w3c   
        var ns6 = (w3c && (navigator.appName == "Netscape")) ? true : false; //Netscape       W3C
        var left, top;
        if (!ns6) {//  IE
            var nLt = 0;
            var nTp = 0;
            var offsetParent = obj;

            while (offsetParent != null && offsetParent != document.body) {
                nLt += offsetParent.offsetLeft;
                nTp += offsetParent.offsetTop;
                offsetParent = offsetParent.offsetParent;
            }
            left = nLt;
            top = nTp + obj.offsetHeight;
        } else {//  w3c
            left = obj.offsetLeft - 5;
            top = obj.offsetTop + obj.offsetHeight;
        }

        $('#showInfo').css('display', 'block');
        $('#showInfo').css('top', top);

        var seach = getCookie("jinWebCookies");
        $('#showInfo').html(seach);

    }
    function hideSearch(obj) {
        setSearchFlag = setTimeout(function () { $('#showInfo').css('display', 'none'); }, 100);
    }

    function clearSearchFlag() {
        window.clearTimeout(setSearchFlag); //   setTimeout()        。
    }
    function getCookie(cookieName) {//  cookie
        var cookieContent = '';
        var cookieAry = document.cookie.split("; "); //  Cookie    
        for (var i = 0; i < cookieAry.length; i++) {
            //var cookieName = cookieName  + i;
            var temp = cookieAry[i].split("=");
            if (temp[0] == cookieName) {
                cookieContent = unescape(temp[1]);
            }
        }
        return cookieContent;
    }
    //  Cookie  
    //document.cookie = "cookieName=" + escape("      "); //cookieName     Cookie     
	
</script>
ok、検索ボックスを挿入してjsをトリガーします
        <form id="form1" runat="server">
        <asp:TextBox runat="server" id="searchId" onkeyup="showSearch(this)" onblur="hideSearch(this)"/>
        <asp:Button runat="server" Text="btn_search AddCookie"
            onclick="Unnamed1_Click" />
	</form>
	<div style="width:150px;height:300px;border:1px solid #817F82;display:none;position: absolute;" id="showInfo"></div>
以上は、本人がここのクッキーに対してユーザ検索データを保存することである.その後、ユーザが検索データのポップアッププロンプトを入力して行ったいくつかの実験.
全体的な方法はこうです.興味のある学生は討論することができて、私たちはもっと効果的な実現を望んでいます.
本文のブログのオリジナルの文章、ブログ、同意を得ないで、転載してはいけません.