この記事の例では、JQuery が単純なサーバー ポーリング効果を実装する方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:
多くのフォーラムに参加すると、未読の電子メールの数を示すプロンプトがポップアップ表示され、または入力後に完了していないタスクの数を OA システムがプロンプト表示します。時々プロンプトが表示されますが、それを実装する方法。実際、jquery の使用は比較的簡単です。中心となる要素は、json 形式の解析と setInterval() 関数です。一緒に実装しましょう:
まず、default.aspx ページは次のようになります:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!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"> <title>服务器轮询</title> <link href="Content/jquery-ui-1.7.2.custom.css" rel="stylesheet" type="text/css" /> <link href="Content/ui.jqgrid.css" rel="stylesheet" type="text/css" /> <script src="Scripts/jquery-1.3.2.min.js" type="text/javascript"></script> <script src="js/i18n/grid.locale-en.js" type="text/javascript"></script> <script src="js/jquery.jqGrid.min.js" type="text/javascript"></script> <script src="js/src/grid.base.js" type="text/javascript"></script> <script type="text/javascript"> function showUnreadNews() { $(document).ready(function() { $.ajax({ type: "GET", url: "Result.ashx", dataType: "json", success: function(msg) { //alert(msg); $.each(msg, function(id, title) { $("#news").append("<a href=detailnews.aspx?id=" + id + ">" + title + "</a><br>"); }); } }); }); } setInterval('showUnreadNews()',5000); </script> </head> <body> <form id="form1" runat="server"> <div id="news"> </div> </form> </body> </html>
上記のコードは主に ajax 関数を使用して Result.ashx ページに ajax リクエストを発行し、その後 Result.ashx ページが json データを返して解析します。最後に、setInterval() 関数を使用して次の処理を実行します。特定の Result.ashx ページのポーリング効果 コードは次のとおりです:
<%@ WebHandler Language="C#" Class="Result" %> using System; using System.Web; using System.Text; using System.Data.SQLite; using System.Data; public class Result : IHttpHandler { public void ProcessRequest (HttpContext context) { string sql = "select * from Content where NewsFlag=0"; DataTable dt = new DataTable(); using (SQLiteConnection conn = new SQLiteConnection(InitSQLite().Connection)) { SQLiteDataAdapter sda = new SQLiteDataAdapter(sql, conn); sda.Fill(dt); } string jsonStr = GetJson(dt); context.Response.ContentType = "text/json"; context.Response.Buffer = true; context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1); context.Response.AddHeader("pragma", "no-cache"); context.Response.AddHeader("cache-control", ""); context.Response.CacheControl = "no-cache"; context.Response.Write(jsonStr); } public static string GetJson(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("{"); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append( dt.Rows[i]["NewsID"].ToString() + ":" +"\""+ dt.Rows[i]["NewsTitle"].ToString()+"\","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } public Sqlite InitSQLite() { Sqlite _sqLite = new Sqlite(); _sqLite.ConnetStringBuilder.DataSource = AppDomain.CurrentDomain.BaseDirectory + "News.db3"; _sqLite.ConnetStringBuilder.Pooling = true; _sqLite.ConnetStringBuilder.FailIfMissing = true; _sqLite.ConnetStringBuilder.UseUTF16Encoding = true; return _sqLite; } public bool IsReusable { get { return false; } } }
データベースは sqlite を使用しています。具体的な使用法についてはご自身でご確認ください。この処理ファイルでは、データテーブルのデータから形式に従ったjsonデータを生成することが最も重要です。
このようにして、最終的にシステムが実装され、ホームページは最新のデータを取得するためにサーバーにデータをポーリングします。
さらに jQuery 関連のコンテンツに興味がある読者は、このサイトの特別トピック「JQuery スイッチングのエフェクトとテクニックの概要」、「jQuery のドラッグ エフェクトとテクニックの概要」を参照してください。 ", "JQuery 拡張スキルまとめ", "jQuery 共通古典特撮まとめ", "jQuery アニメーションと特殊効果の使い方まとめ", " jQuery セレクターの使い方まとめ " および "jQuery の共通プラグインと使い方のまとめ "
この記事が jQuery プログラミングのすべての人に役立つことを願っています。