CREATE TABLE Comments (
Id INT IDENTITY(1,1) PRIMARY KEY,
UserName NVARCHAR(50) NOT NULL,
Message NVARCHAR(MAX) NOT NULL,
CreateTime DATETIME DEFAULT GETDATE()
);
<!DOCTYPE html>
<html>
<head>
<title>AJAX 無刷新評論示範</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<table id="commentList"><!-- 評論列表容器 --></table>
<div>
用戶名:<input id="txtUser" type="text" /><br />
內容:<textarea id="txtMsg" rows="5" cols="40"></textarea><br />
<input id="btnSubmit" type="button" value="提交評論" />
</div>
<script>
$(function () {
// 1. 頁面載入:讀取現有評論
loadComments();
// 2. 提交按鈕點擊
$("#btnSubmit").click(function () {
var user = $("#txtUser").val().trim();
var msg = $("#txtMsg").val().trim();
if (!user || !msg) { alert("請填寫完整"); return; }
$.post("Handler/CommentHandler.ashx", { action: "add", user: user, msg: msg }, function (res) {
if (res.success) {
// 直接在前端追加新評論,無需重新查詢
appendComment(user, msg);
$("#txtMsg").val("");
} else {
alert("提交失敗:" + res.error);
}
}, "json");
});
});
function loadComments() {
$.getJSON("Handler/CommentHandler.ashx?action=list", function (data) {
if (data.success) {
data.comments.forEach(appendComment);
}
});
}
function appendComment(user, msg) {
var html = `${user} 說: ${msg} `;
$("#commentList").append(html);
}
</script>
</body>
</html>
<%@ WebHandler Language="C#" Class="CommentHandler" %>
using System;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;
using System.Collections.Generic;
public class CommentHandler : IHttpHandler, System.Web.SessionState.IRequiresSessionState
{
string connStr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json; charset=utf-8";
string action = context.Request["action"];
try
{
if (action == "list")
{
var list = new List
cmd.Parameters.AddWithValue。{success:bool, data..., error:string},前端統一判斷 res.success。action 參數處理列表/新增,RESTful 風格可改用 Web API。textContent 或編碼函式),範例為簡化直接插入 HTML,實務必處理。action=list&page=1&size=20。ParentId,前端遞迴渲染。本例展示 ASP.NET + jQuery AJAX + Generic Handler 實現無刷新評論系統的完整流程:資料表設計、前端載入/提交/渲染、後端 JSON API、參數化 SQL、統一錯誤處理。架構簡單清晰,易於擴充為生產級功能。