<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Ajax實現評論中頂和踩功能的實例代碼

        來源:懂視網 責編:小采 時間:2020-11-27 22:41:09
        文檔

        Ajax實現評論中頂和踩功能的實例代碼

        Ajax實現評論中頂和踩功能的實例代碼:效果大致如下: javascript這塊使用jquery。新建一個Asp.net web項目,使用NuGet獲取Jquery最新版。 數據庫方面使用Nhibernate,用Install-Package Nhibernate引用。 數據庫是用的PostgreSQL,Install-Package Npgsql把驅動
        推薦度:
        導讀Ajax實現評論中頂和踩功能的實例代碼:效果大致如下: javascript這塊使用jquery。新建一個Asp.net web項目,使用NuGet獲取Jquery最新版。 數據庫方面使用Nhibernate,用Install-Package Nhibernate引用。 數據庫是用的PostgreSQL,Install-Package Npgsql把驅動

        效果大致如下:

        javascript這塊使用jquery。新建一個Asp.net web項目,使用NuGet獲取Jquery最新版。

        數據庫方面使用Nhibernate,用Install-Package Nhibernate引用。

        數據庫是用的PostgreSQL,Install-Package Npgsql把驅動裝上。我這里偷個懶,數據庫名,用戶名和密碼都是ajaxDemo了。

        創建數據庫:

        代碼如下:
        CREATE DATABASE "ajaxDemo"
          WITH OWNER = "ajaxDemo"
               ENCODING = 'UTF8'
               TABLESPACE = pg_default
               LC_COLLATE = 'Chinese (Simplified)_People''s Republic of China.936'
               LC_CTYPE = 'Chinese (Simplified)_People''s Republic of China.936'
               CONNECTION LIMIT = -1;

        NHiberate配置文件:

        代碼如下:
        <?xml version="1.0" encoding="utf-8"?>

        <hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
          <session-factory>
            <property name="connection.driver_class">NHibernate.Driver.NpgsqlDriver</property>
            <property name="connection.connection_string">
              Server=localhost;Database=ajaxDemo;User ID=ajaxDemo;Password=ajaxDemo;
            </property>
            <property name="dialect">NHibernate.Dialect.PostgreSQLDialect</property>
            <mapping assembly="AjaxDemo"></mapping>
          </session-factory>
        </hibernate-configuration>

        順帶說一句NHiberate的配置模板是錯的,改initial catalog為Database。

        我沒有使用NHiberate的一對多映射(主要是覺得用不上),實體類有兩個Info和Review。

        代碼如下:
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using Iesi.Collections.Generic;

        namespace AjaxDemo.Modal
        {
            public class Info
            {
                public virtual int Id { get; set; }
                public virtual string Content { get; set; }
            }


        代碼如下:
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;

        namespace AjaxDemo.Modal
        {
            public class Review
            {
                public virtual int Id { get; set; }
                public virtual int InfoId { get; set; }
                public virtual string Content { get; set; }
                public virtual int Support { get; set; }
                public virtual int Opposition { get; set; }
            }
        }

        業務層是對應的代碼就不貼了。主要就是添加和修改功能。

        準備工作到此基本完成了,現在來實現我們所需要的功能。

        Ajax最大的特點是可以僅向服務器發送并取回必需的數據,它使用Soap或其它一些基于XML或Json的頁面服務接口,并在客戶端采用JavaScript處理來自服務器的響應。因為服務器和客戶端之間的數據交換的數據大量減少,結果我們就能看到回應更快的應用。同時很多的處理工作可以在發出請求的客戶端機器上完成,所以Web服務器的處理時間也減少了。

        也就是我們需要兩個部分的東西:

        1.客戶端的處理,基于JQuery

        2.服務器端的處理,我選用的一般處理程序(ashx),因為返回的數據很簡單,所以沒有xml和json。

        先來看服務端,我們需要獲取用戶頂或踩的是哪條評論,所以需要id,頂和踩的處理我寫在一起,所以還需要一個參數來區分。

        獲取到兩個參數以后先根據state判斷是踩還是頂,然后更新相應條目,服務端返回一個代表當前對應數目的數字。

        ChangeState.ashx:

        代碼如下:
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using AjaxDemo.BLL;
        using AjaxDemo.Modal;

        namespace AjaxDemo.Ajax
        {
            /// <summary>
            /// 返回更新以后的數目
            /// </summary>
            public class ChangeState : IHttpHandler
            {
                public void ProcessRequest(HttpContext context)
                {
                    int state = int.Parse(context.Request.QueryString["state"]);
                    int id=int.Parse(context.Request.QueryString["id"]);
                    ReviewService rs = new ReviewService();
                    Review r;
                    switch (state)
                    {
                        case 0:
                            r=rs.UpdateSupport(id);
                            context.Response.Write(r.Support);
                            break;
                        case 1:
                            r = rs.UpdateOpposition(id);
                            context.Response.Write(r.Opposition);
                            break;
                    }
                }

                public bool IsReusable
                {
                    get
                    {
                        return false;
                    }
                }
            }
        }

        再說客服端,因為用的JQuery,活就很少了。使用的$.get方法。

        先請求服務端,傳入兩個參數:state和id,收到服務端數據后更改狀態。

        主要代碼:

        代碼如下:
        function change(id, state) {
                    $.get("./Ajax/ChangeState.ashx", { id: id, state: state }, function (data, textStatus) {
                        if (textStatus == "success") {
                            switch (state) {
                                case 0:
                                    $("#Support" + id).text("頂(" + data + ") ");
                                    break;
                                case 1:
                                    $("#Opposition" + id).text("踩(" + data + ") ");
                                    break;
                            }
                        }
                    });
                }

        頁面代碼:
        代碼如下:

         

        <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ViewDetail.aspx.cs" Inherits="AjaxDemo.ViewDetail" %>

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

        <html xmlns="http://www.w3.org/1999/xhtml">
        <head runat="server">
            <script src=//www.gxlcms.com/htynkn/archive/2012/01/31/"Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
            <script type="text/javascript">
                function change(id, state) {
                    $.get("./Ajax/ChangeState.ashx", { id: id, state: state }, function (data, textStatus) {
                        if (textStatus == "success") {
                            switch (state) {
                                case 0:
                                    $("#Support" + id).text("頂(" + data + ") ");
                                    break;
                                case 1:
                                    $("#Opposition" + id).text("踩(" + data + ") ");
                                    break;
                            }
                        }
                    });
                }
            </script>
        </head>
        <body>
            <form id="BaseForm" runat="server">
            <div id="infoDetail">
            <h4>標題</h4>
            <h1>
                <asp:Label ID="infoContent" runat="server" Text=""></asp:Label></h1>
            </div>


            <div id="reviews">
            <h4>評論</h4>
                <asp:Repeater ID="reviewList" runat="server">
                <HeaderTemplate><ul></HeaderTemplate>
                <FooterTemplate></ul></FooterTemplate>
                <ItemTemplate><li><%# DataBinder.Eval(Container.DataItem, "Content") %></li>
                <div>

        代碼如下:
        <a onclick="change(<%# DataBinder.Eval(Container.DataItem, "Id")%>,0)" id="Support<%# DataBinder.Eval(Container.DataItem, "Id")%>" href=//www.gxlcms.com/htynkn/archive/2012/01/31/"#">頂(<%# DataBinder.Eval(Container.DataItem, "Support") %>)</a>

        <a onclick="change(<%# DataBinder.Eval(Container.DataItem, "Id")%>,1)" id="Opposition<%# DataBinder.Eval(Container.DataItem, "Id")%>" href=//www.gxlcms.com/htynkn/archive/2012/01/31/"#">踩(<%# DataBinder.Eval(Container.DataItem, "Opposition")%>)</a>

        </div>
                </ItemTemplate>
                </asp:Repeater>
            </div>
            </form>
        </body>
        </html>

        效果:

         

        寫在最后:

        1.這篇文章主要是寫一點大致做法,不完整也不全面。很多錯誤什么的都沒有處理,也沒有對細節進行考究。

        2.服務端也可以用webthod,特別是修改現有項目的時候,直接將方法保留給客服端javascript調用就行了。我比較疑惑ashx和webmethod到底哪個好些。

        3.單元測試那個純粹是為了方便…不要噴哈

        4.NHiberate的配置模板…我最開始為此糾結了很久…

        5.相關庫和軟件的版本:Iesi.Collection 3.2.0.4000 Jquery 1.7.1 NHiberate 3.2.0.4000 Npgsql 2.0.11 Nunit 2.5.10.11092

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Ajax實現評論中頂和踩功能的實例代碼

        Ajax實現評論中頂和踩功能的實例代碼:效果大致如下: javascript這塊使用jquery。新建一個Asp.net web項目,使用NuGet獲取Jquery最新版。 數據庫方面使用Nhibernate,用Install-Package Nhibernate引用。 數據庫是用的PostgreSQL,Install-Package Npgsql把驅動
        推薦度:
        標簽: 代碼 實例 的例子
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 老牛精品亚洲成av人片| 亚洲国产精品碰碰| 久久亚洲国产精品| 一级有奶水毛片免费看| 1024免费福利永久观看网站| 一本久久a久久精品亚洲| 一级中文字幕乱码免费| 久久国产成人亚洲精品影院 | 国产精品亚洲а∨无码播放麻豆| 一级毛片aaaaaa视频免费看| 亚洲精品在线视频| 免费无码又爽又刺激网站| 亚洲AV无码一区二区三区DV | a在线观看免费视频| 国产亚洲综合色就色| 久久免费高清视频| 亚洲激情黄色小说| 免费无码肉片在线观看| 亚洲av无码专区首页| 亚洲国产婷婷香蕉久久久久久| 国产精品美女久久久免费 | 日本视频免费高清一本18| 亚洲视频免费在线播放| 好吊妞在线成人免费| 日本在线观看免费高清| 亚洲av永久无码精品秋霞电影影院| 1000部国产成人免费视频| 亚洲丁香婷婷综合久久| 在线亚洲人成电影网站色www| 日韩视频在线观看免费| 亚洲欧美日韩中文字幕一区二区三区| 四虎AV永久在线精品免费观看| a级片免费在线观看| 亚洲卡一卡2卡三卡4麻豆| 亚洲AV无码一区二区三区在线观看 | fc2成年免费共享视频18| 亚洲精品国产福利片| 国产精品久久久久影院免费| 久久综合九色综合97免费下载| 亚洲夂夂婷婷色拍WW47| 亚洲精品成人片在线观看精品字幕|