Ajax 댓 글 의 맨 위 와 밟 기 기능 을 실현 하 는 인 스 턴 스 코드
javascript 은 jquery 를 사용 합 니 다.Asp.net 웹 프로젝트 를 새로 만 들 고 NuGet 을 사용 하여 Jquery 최신 버 전 을 가 져 옵 니 다.
데이터베이스 에 서 는 Nhibenate 를 사용 하고 Install-Package Nhibenate 로 참조 합 니 다.
데이터 베 이 스 는 PostgreSQL,Install-Package Nggsql 로 드라이버 를 설치 합 니 다.게 으 름 피 우 고 데이터베이스 이름,사용자 이름과 비밀 번 호 는 모두 ajax Demo 입 니 다.
데이터베이스 만 들 기:
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 기반 페이지 서비스 인 터 페 이 스 를 사용 하고 클 라 이언 트 에서 자바 스 크 립 트 로 서버 에서 온 응답 을 처리 하 는 것 입 니 다.서버 와 클 라 이언 트 간 의 데이터 교환 데이터 가 대량으로 줄 어 들 었 기 때문에 우 리 는 응답 이 빠 른 응용 을 볼 수 있 습 니 다.또한 많은 처리 작업 이 요청 한 클 라 이언 트 기기 에서 이 루어 질 수 있 기 때문에 웹 서버 의 처리 시간 도 줄 어 들 었 다.
즉,우 리 는 두 부분 이 필요 하 다.
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.서버 에서 도 웹 thod 를 사용 할 수 있 습 니 다.특히 기 존 항목 을 수정 할 때 고객 센터 의 자바 script 호출 방법 을 그대로 유지 하면 됩 니 다.나 는 ashx 와 webmethod 가 도대체 어느 것 이 좋 은 지 비교적 의심스럽다.
3.유닛 테스트 그 건 순 전 히 편 의 를 위해 서...뿌리 지 마 세 요.
4.NHiberate 의 설정 템 플 릿...처음에 고민 을 많이 했 는데...
5.관련 라 이브 러 리 와 소프트웨어 버 전:Iesi.collection 3.2.0.4000 Jquery 1.7.1 NHiberate 3.2.0.4000 Nggsql 2.0.11 Nunit 2.5.10.11092
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
안 드 로 이 드 는 위 챗 모멘트 를 모방 하여 댓 글 을 클릭 하면 자동 으로 관련 줄 기능 을 찾 습 니 다.그림 에서 빨간색 부분 은 키보드 가 이전에 어떤 정보 평론 구역 이 있 는 위 치 를 보 여 준다.파란색 부분 은 키보드 이 고 키보드 가 열 렸 을 때 빨간색 부분 을 노란색 위치 로 옮 겨 야 한다.이렇게 노란...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.