欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > Ajax實現評論中頂和踩功能的實例代碼

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

熱門標簽:凱立德導航官網地圖標注 五常地圖標注 地圖標注和認領 萊蕪外呼電銷機器人價格 電銷語音自動機器人 鄭州400電話辦理 聯通 戶外地圖標注軟件手機哪個好用 智能電話營銷外呼系統 長春呼叫中心外呼系統哪家好

效果大致如下:

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=https://www.jb51.net/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=https://www.jb51.net/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=https://www.jb51.net/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

您可能感興趣的文章:
  • 基于jquery實現ajax無刷新評論
  • Asp.net利用JQuery AJAX實現無刷新評論思路與代碼
  • asp.net Ajax之無刷新評論介紹
  • ASP+Ajax實現無刷新評論簡單例子
  • PHP Ajax實現頁面無刷新發表評論
  • PHP Ajax實現頁面無刷新發表評論
  • 一個jsp+AJAX評論系統
  • Ajax實現評論提交
  • 來自chinaz的ajax獲取評論代碼
  • ajax無刷新評論功能

標簽:湖州 福州 衢州 紅河 西寧 宣城 西藏 岳陽

巨人網絡通訊聲明:本文標題《Ajax實現評論中頂和踩功能的實例代碼》,本文關鍵詞  Ajax,實現,評論,中頂,和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Ajax實現評論中頂和踩功能的實例代碼》相關的同類信息!
  • 本頁收集關于Ajax實現評論中頂和踩功能的實例代碼的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    日韩福利小视频| 亚洲精品乱码久久久久久日本蜜臀| 午夜精品福利一区二区蜜股av | 亚洲国产欧美在线| 亚洲精品乱码久久久久久久久 | 亚洲香蕉中文网| 午夜爽爽爽男女免费观看| 国产香蕉久久精品综合网| 国产真实乱偷精品视频免| 中文字幕在线1| 久久综合国产精品| 国产一区二区三区四| 亚洲色图日韩精品| 国产农村妇女毛片精品久久麻豆| 国产一区二区三区国产| 免费一级suv好看的国产网站| 欧美激情中文字幕一区二区| 成人免费毛片片v| 日本高清不卡在线观看| 一区二区在线观看免费视频播放 | 99久久国产免费看| 色综合久久综合中文综合网| 亚洲欧美日韩国产手机在线 | 91在线视频18| 欧美日韩精品福利| 日韩精彩视频在线观看| a天堂中文字幕| 中文字幕欧美三区| 99riav一区二区三区| 欧美日韩在线播放| 日本亚洲天堂网| 日韩av片在线免费观看| 亚洲日本在线看| 国模私拍在线观看| 精品欧美乱码久久久久久1区2区 | 免费精品99久久国产综合精品| 中文字幕人妻一区二区三区在线视频| 久久久久久久久久久黄色| 国产一区 二区 三区一级| 中文在线字幕在线观看| 亚洲成人av一区二区三区| 一级黄色片大全| 国产精品久久二区二区| 久久久无码人妻精品无码| 日韩小视频在线观看专区| 国产呦萝稀缺另类资源| 日本韩国精品在线| 欧美aⅴ一区二区三区视频| 精品伦精品一区二区三区视频密桃| 国产精品久久久久三级| 中文字幕无人区二| 久久精品视频免费观看| 少妇愉情理伦片bd| 精品处破学生在线二十三| 成人激情黄色小说| 日韩限制级电影在线观看| 国产超碰在线一区| 7777精品伊人久久久大香线蕉经典版下载 | 欧美极品另类videosde| 91猫先生在线| 2020国产精品| 免费观看黄网站| 久久这里只有精品首页| 能看毛片的网站| 久久久蜜臀国产一区二区| 91一区二区在线| 久久综合九色综合欧美98| 男人操女人下面视频| 亚洲精品在线观看网站| 91亚洲午夜精品久久久久久| 精品国产乱码久久久久久蜜臀 | 亚洲成人av福利| 精品少妇一区二区三区密爱| 亚洲国产aⅴ天堂久久| 天天操夜夜操av| 日本亚洲电影天堂| 色94色欧美sute亚洲13| 韩国毛片一区二区三区| 欧美区视频在线观看| 国产**成人网毛片九色| 日韩你懂的电影在线观看| 91在线国产观看| 中文字幕高清不卡| 国产亚洲无码精品| 亚洲一区二区三区在线| 91n在线视频| 久久99精品久久久久久国产越南| 欧美中文字幕不卡| 丁香一区二区三区| ww亚洲ww在线观看国产| 中国xxxx性xxxx产国| 自拍偷拍亚洲综合| 国产精品久久久免费看| 蜜桃久久av一区| 欧美日韩电影在线播放| www.欧美日韩国产在线| 国产女人水真多18毛片18精品视频 | 亚洲av人人澡人人爽人人夜夜| 中文字幕亚洲欧美在线不卡| 欧美人妻一区二区三区| 日韩精品成人一区二区三区| 欧美三级三级三级爽爽爽| 成人激情黄色小说| 中文字幕免费不卡| 免费看的黄色网| 麻豆成人91精品二区三区| 91麻豆精品国产91久久久资源速度| 91在线视频播放地址| 国产精品福利在线播放| 欧美a级片免费看| 国产一区二区三区免费看 | 美女黄色一级视频| 亚洲综合一区二区三区| 色婷婷综合久久久中文字幕| 国产成a人亚洲精| 亚洲国产成人自拍| 国产免费美女视频| 福利一区二区在线观看| 欧美国产日韩一二三区| 99热99这里只有精品| 国产福利一区二区三区视频| 久久精品人人做人人综合| 精品无码在线观看| 国内精品久久久久影院一蜜桃| 精品区一区二区| 免费网站在线高清观看| 九色综合国产一区二区三区| 26uuu亚洲综合色| 精品无码在线观看| 国产一区久久久| 国产欧美一区二区精品仙草咪| 萌白酱视频在线| 国产98色在线|日韩| 国产精品不卡在线| 色噜噜狠狠成人网p站| 日本黄色www| 亚洲成av人片| 日韩欧美亚洲国产精品字幕久久久 | 日本久久久久久久久久| 午夜欧美在线一二页| 日韩一二三四区| 日本xxxxxxxxx18| 国产一区二区在线免费观看| 亚洲国产精品高清| 一本久久综合亚洲鲁鲁五月天| 91丝袜美腿高跟国产极品老师 | 一区二区三区免费网站| 欧美久久久一区| 日本黄色网址大全| 国产精品一区二区无线| 亚洲欧美综合在线精品| 欧美日韩专区在线| 国产激情视频网站| 国内精品久久久久影院色 | 亚洲欧美日韩一区| 欧美年轻男男videosbes| 最新中文字幕视频| 国产高清亚洲一区| 亚洲日本青草视频在线怡红院 | 欧美在线视频不卡| 中文字幕免费在线播放| 国内精品第一页| 亚洲视频1区2区| 制服视频三区第一页精品| 色噜噜日韩精品欧美一区二区| 国产精品一区二区久激情瑜伽| 亚洲欧美另类综合偷拍| 欧美精品18+| 国产亚洲精品精品精品| 99精品视频中文字幕| 日韩高清中文字幕一区| 国产亚洲精品7777| 欧美在线观看一区| 一级片视频免费看| 99久久精品国产麻豆演员表| 奇米影视一区二区三区小说| 国产精品免费人成网站| 51午夜精品国产| 日韩精品久久久久久久的张开腿让| 91看片淫黄大片一级在线观看| 美腿丝袜亚洲综合| 亚洲视频一区二区在线观看| 日韩一区二区三区四区五区六区| 国产高清视频免费在线观看| jjzzjjzz欧美69巨大| 国产精品资源网| 午夜欧美视频在线观看| 国产精品日产欧美久久久久| 91精品一区二区三区久久久久久| 亚洲欧美综合7777色婷婷| 日本人妻一区二区三区| 国内外成人在线| 亚洲成人av免费| 中文字幕一区二区三区在线不卡| 日韩免费视频线观看| 99久久综合色| 久久99精品久久久久久| 亚洲一区二区av在线| 国产精品视频第一区| 日韩欧美激情一区|