• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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實現(xiàn)評論中頂和踩功能的實例代碼

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

    Ajax實現(xiàn)評論中頂和踩功能的實例代碼

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

    效果大致如下:

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

    數(shù)據(jù)庫方面使用Nhibernate,用Install-Package Nhibernate引用。

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

    創(chuàng)建數(shù)據(jù)庫:

    代碼如下:
    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; }
        }
    }

    業(yè)務(wù)層是對應(yīng)的代碼就不貼了。主要就是添加和修改功能。

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

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

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

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

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

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

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

    ChangeState.ashx:

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

    namespace AjaxDemo.Ajax
    {
        /// <summary>
        /// 返回更新以后的數(shù)目
        /// </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方法。

    先請求服務(wù)端,傳入兩個參數(shù):state和id,收到服務(wù)端數(shù)據(jù)后更改狀態(tài)。

    主要代碼:

    代碼如下:
    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.這篇文章主要是寫一點大致做法,不完整也不全面。很多錯誤什么的都沒有處理,也沒有對細節(jié)進行考究。

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

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

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

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

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

    文檔

    Ajax實現(xiàn)評論中頂和踩功能的實例代碼

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

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 亚洲热线99精品视频| 久久青青草原精品影院| 成人久久精品一区二区三区| 久久久久人妻精品一区三寸蜜桃| 97热久久免费频精品99| 亚洲精品乱码久久久久久不卡| 国产91精品黄网在线观看| 51视频国产精品一区二区| 亚洲精品乱码久久久久久按摩| 国产内地精品毛片视频| 精品午夜久久福利大片| 国产精品亚洲а∨无码播放| 亚洲av无码国产精品色午夜字幕| 精品久久久久久久中文字幕| 在线人成精品免费视频| 国产女人精品视频国产灰线| 真实国产乱子伦精品一区二区三区| 精品久久久久国产免费| 国产精品成人无码久久久久久| 国产精品无码A∨精品影院 | 国产三级久久久精品麻豆三级| 亚洲国产精品第一区二区三区| 国产在线观看一区精品| 国产成人精品久久综合 | 亚洲一区爱区精品无码| 欧美激情精品久久久久久久| 久久久国产精品| 亚洲国产成人精品女人久久久| 久久精品无码一区二区日韩AV| 国产精品v欧美精品v日韩精品| 欧美肥屁VIDEOSSEX精品| 无码人妻精品一区二区三区99仓本 | 欧美黑人巨大videos精品| 久久精品亚洲欧美日韩久久| 久久996热精品xxxx| 久久久久久亚洲精品无码| 久久久久国产精品三级网| 久久久久人妻精品一区三寸蜜桃| 日本精品夜色视频一区二区| 四虎精品免费永久免费视频| 亚洲精品老司机在线观看|