浅談asp.Net本機cookie模百度(google)実現検索inputボックス自動ポップアップ検索ヒント

6192 ワード

ユーザーがキーワードを入力して自動的に関連検索結果をポップアップする場合、ここでは2つのソリューションを提供し、2つの異なる状況に使用します.
一般的な方法は、データベースにユーザー検索関係テーブルを作成し、ユーザー検索ボックスで入力したキーワードを介してデータテーブルの関連データを非同期で呼び出し、非表示divに表示することです.
第2の方法は、私が今重点的に議論している方法であり、単一のユーザーに適用され、このユーザーの従来の検索データに基づいて検索ヒント機能を実現することである.技術的に重要なのは,ユーザの従来の検索データを記録し,クッキーに書き込み,ユーザ本体クッキーからページが呼び出されることである.
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を利用して完成する機能も強くなります.Webサーバを閲覧すると、Webサーバがいつ閲覧したか、どのくらい滞在したかなどの情報がわかるかもしれません.これらの情報は、あなたが初めてページを閲覧したとき、Webサーバが生成したCookieに格納されているからです.次のコードは、Cookieに複数の文字列を格納する例です.
cookie [ "   " ] = "   ";
cookie [ "   " ] = "  ";
cookie [ "   " ] = " 26";
Cookieには一時的なものもあれば、永遠のものもあります.永続Cookieはファイル形式でコンピュータに保存され、Internet Explorerをオフにしてもコンピュータに保存されます.サイトに再アクセスすると、Cookieを作成したサイトを読み込むことができます.具体的なプログラミングでは、この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でコード

    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     
	
ok、検索ボックスを挿入してjsをトリガーします
以上は、本人がここのクッキーに対してユーザ検索データを保存し、ユーザが検索データを入力するポップアッププロンプトのいくつかの実験である.全体的な方法はこのようにして、興味のある学生は一緒に討論することができて、もっと有効な実現方法があることを望んでいます.