토론net 기계 쿠키 바이두 모방 검색 input 검색 알림 팝업 상자 자발적

7192 단어 asp.net
사용자가 입력한 키워드와 관련된 검색 결과를 자발적으로 팝업하기 위해 저는 두 가지 해결 방안을 들었습니다. 두 가지 다른 방안에 대해.
자주 사용하는 방법은 사용자 데이터베이스에서 관계표를 찾는 것이다.그리고 사용자 검색 상자 키워드 비동기 호출 데이터 테이블의 관련 데이터를 입력하십시오.숨겨진 div에 표시됩니다.또 다른 방식은 바로 내가 지금 중점적으로 토론하고 있는 방식이다.단일 사용자에게 적용되며, 이 사용자의 기존 검색 데이터를 바탕으로 검색 알림 기능을 실현한다.기술 관건은 사용자의 과거 검색 데이터를 기록하고 쿠키를 쓴 다음에 페이지가 사용자의 본체 쿠키에서 데이터를 호출하는 것이다.ok, 다음은 본론으로 들어갑니다.본고는 주로 실현 절차를 설명하는데 코드는 자신의 실제 필요에 따라 변경할 수 있다.
1. 쿠키를 어떻게 씁니까?쿠키를 쓰기 위해서요.그의 단계는 주로 세 단계로 상세하다. 예를 들어 다음과 같다.
먼저 Http Cookie 대상을 만들고 이 대상을 통해 쿠키를 만들어야 한다. 이 대상의 이름은 바로 이후에 생긴 쿠키 이름이다.
자세한 내용은 다음 코드와 같습니다.
HttpCookie cookie = new HttpCookie("MyOnlyCookieName");//        Cookie  
그런 다음 생성된 Http 쿠키 객체의 "Value"속성에 문자열 값을 할당합니다. "Value"값은 나중에 생성된 쿠키의 값입니다.
예: MyNameCookie.Value = 사용자가 쿠키에 값을 지정합니다.만약 당신이 쓰고 싶은 쿠키 수치가 간단한 문자열이 아니라 복잡한 데이터 형식이라고 가정한다면, 우리는 이러한 데이터 형식이 쿠키에 직접 저장될 수 없다는 것을 안다.쿠키에는 문자열만 저장할 수 있기 때문입니다.그러나 이 복잡한 데이터 유형을 여러 문자열로 변환한 다음 이 여러 문자열을 같은 시기에 만들어진 쿠키 값에 값을 부여함으로써 쿠키의 내용이 풍부해지고 나중에 쿠키를 이용한 기능도 강해진다.
이럴 때 왜 웹 서버를 훑어보았는지, 웹 서버는 언제 이전에 훑어보았는지, 그리고 얼마나 오래 머물렀는지 정보를 알 수 있을 것이다.이 정보는 웹 페이지를 처음 방문했을 때 웹 서버가 만든 쿠키에 저장되어 있기 때문이다.다음 코드는 여러 문자열을 쿠키에 저장하는 예제입니다.
cookie [ "   " ] = "   ";
cookie [ "   " ] = "  ";
cookie [ "   " ] = " 26";
쿠키는 일시적인 것이 있다.영원할 수도 있어.영구 쿠키는 컴퓨터에 파일로 저장되며 Internet Explorer를 닫아도 컴퓨터에 남아 있습니다.
이 사이트에 다시 액세스하면 쿠키를 만든 사이트에서 읽을 수 있습니다.자세한 프로그래밍은 이 쿠키를 쓸 때입니다.다음 코드와 같이 쿠키의 라이프 사이클을 설정합니다: DateTime dtNow = DateTime.Now ; TimeSpan tsMinute = new TimeSpan ( 1 , 0 , 0 , 0 ) ; cookie . Expires = dtNow + tsMinute ; 위 코드는 생성된 쿠키의 생명기를'하루'로 설정합니다.'Timespan'속성을 바꾸어 쿠키를 만드는 상세한 생명기를 설정할 수 있습니다.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>
이상은 본인이 이 쿠키에 대해 사용자의 검색 데이터를 저장하는 것입니다.그리고 사용자가 입력한 검색 데이터 팝업 알림에 대한 실험들
전체적인 방법은 이렇다.흥미가 있는 학우들은 토론할 수 있는데, 우리는 더욱 효과적인 실현을 희망한다.
판권 성명: 본 블로그의 오리지널 글, 블로그는 동의 없이 전재할 수 없습니다.

좋은 웹페이지 즐겨찾기