一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 使用ASP.NET一般處理程序或WebService返回JSON的實現代碼

使用ASP.NET一般處理程序或WebService返回JSON的實現代碼

2019-09-23 10:26asp.net教程網 ASP.NET教程

今天, 將為大家說明如何在 ASP.NET 中使用一般處理程序或者 WebService 向 javascript 返回 JSON

示例代碼下載: http://zsharedcode.googlecode.com/files/JQueryElementDemo.rar

本文中所包含的內容如下:

  * 準備
  * 一般處理程序/ashx
  * WebService/asmx準備

如果希望通過 ashx 或者 asmx 來返回 JSON, 那么需要引用程序集 System.Web.Extensions.dll, 在 .NET 3.5, 4.0 中已經默認包含. 對于 .NET 2.0, 3.0, 需要安裝 ASP.NET 2.0 AJAX, 可以在 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=883 下載.

一般處理程序/ashx

使用一般處理程序返回 JSON, 對于不同版本的 .NET 都是類似, 請看下面的 handler.ashx 的代碼:

復制代碼代碼如下:

<%@ WebHandler Language="C#" Class="handler" %> 
using System; 
using System.Web; 
using System.Web.Script.Serialization; 
using System.Collections.Generic; 
public class handler : IHttpHandler 

public void ProcessRequest(HttpContext context) 

context.Response.ContentType = "text/javascript"; 
context.Response.Cache.SetNoStore ( ); 
string name = context.Request["name"]; 
SortedDictionary<string, object> values = new SortedDictionary<string, object>(); 
values.Add("message", 
string.IsNullOrEmpty(name) ? "無名氏" : 
string.Format("你好 {0}, {1}", name, DateTime.Now)); 
context.Response.Write(new JavaScriptSerializer().Serialize(values)); 

public bool IsReusable 

get { return false; } 


上面的例子中, 通過 JavaScriptSerializer 類的 Serialize 方法, 將對象轉化為 JSON 對應的字符串. 而轉化的對象是 SortedDictionary, 會生成 { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } 這樣類似的字符串. 如果需要返回數組, 可以定義 object[] 來轉換. 代碼中還使用了 context.Response.Cache.SetNoStore ( ); 來讓瀏覽器每次請求 ashx 時都重新訪問, 而不是使用緩存. 
如果使用 jQuery, 可以使用下面的函數來接收 JSON: 

復制代碼代碼如下:

function(data){ 
alert(data.message); 


WebService/asmx 
在不同版本的 .NET 中, 通過 javascript 訪問 WebService 并返回 JSON 是略有不同的. 首先, 可以分別采用不同的 Web.config 文件.法全部列出, 如有需要請參考: 
.NET 2.0, 3.0 Web.config 

復制代碼代碼如下:

<?xml version="1.0"?> 
<configuration> 
<system.web> 
<compilation debug="true"> 
<assemblies> 
<add 
assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
</assemblies> 
</compilation> 
<pages/> 
<httpHandlers> 
<remove verb="*" path="*.asmx"/> 
<add verb="*" path="*.asmx" 
type="System.Web.Script.Services.ScriptHandlerFactory" 
validate="false"/> 
</httpHandlers> 
</system.web> 
</configuration> 


.NET 3.5 Web.config 
.NET 4.0 Web.config 
以上兩個版本的 Web.config 可以在示例壓縮包中的 Web.3.5.config 和 Web.4.config 中查看. 
下面是 webservice.asmx/webservice.cs 的代碼: 

復制代碼代碼如下:

<%@ WebService Language="C#" CodeBehind="~/App_Code/webservice.cs" Class="webservice" %> 
using System; 
using System.Web; 
using System.Web.Services; 
using System.Web.Services.Protocols; 
using System.Web.Script.Services; 
using System.Web.Script.Serialization; 
using System.Collections.Generic; 
[WebService ( Namespace = "http://tempuri.org/" )] 
[WebServiceBinding ( ConformsTo = WsiProfiles.BasicProfile1_1 )] 
[ScriptService] 
public class webservice : System.Web.Services.WebService 

[WebMethod] 
[ScriptMethod] 
public SortedDictionary<string, object> Save ( string name ) 

this.Context.Response.Cache.SetNoStore ( ); 
SortedDictionary<string, object> values = new SortedDictionary<string, object> ( ); 
values.Add ( "message", 
string.IsNullOrEmpty ( name ) ? "無名氏" : 
string.Format ( "你好 {0}, {1}", name, DateTime.Now ) ); 
return values; 


為類添加屬性 ScriptService, 并對類中的方法使用屬性 ScriptMethod, 可以讓 javascript 來調用這些方法. 這里不需要再使用 JavaScriptSerializer 將對象轉化為 JSON 字符串, 而是直接返回對象即可. 上面的代碼中返回了 SortedDictionary, 在 .NET 2.0, 3.0 中將類似于 { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } 的形式, 而對于 .NET 3.5, 4.0 則是 { "d": { "message": "你好 x, 20xx-xx-xx xx:xx:xx" } }, 因此可以分別在 jQuery 中使用下面的函數來接受 JSON: 

復制代碼代碼如下:

function(data){ 
alert(data.message); 

function(data){ 
alert(data.d.message); 

 

 

JQueryElement 是開源共享的代碼, 可以在 http://code.google.com/p/zsharedcode/wiki/Download 頁面下載 dll 或者是源代碼.

實際過程演示: http://www.tudou.com/programs/view/rHCYHX9cmcI/, 建議全屏觀看.

歡迎訪問 panzer 開源項目, http://zsharedcode.googlecode.com/ , 其中包含了 IEBrowser 控制 WebBrowser 執行各種 js 和 jQuery 腳本以及錄制功能 和 jQueryUI 的 Asp.net 控件 JQueryElement.

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: aa一级护士医生毛片 | 3p文两男一女办公室高h | 91免费永久在线地址 | 成年人黄视频在线观看 | 国产精品露脸国语对白手机视频 | 免费在线观看伦理片 | 久久热在线视频精品店 | 国产精品久久久久久久久久久搜索 | 国产91成人精品亚洲精品 | 美女和男人一起差差 | 久久成人国产精品一区二区 | 国产精品午夜久久 | 亚洲 日韩 自拍 视频一区 | 天天干夜夜拍 | 国产情侣偷国语对白 | 91外围| 蜜桃视频一区二区 | 4虎tv | 国产午夜视频在线观看网站 | 蜜桃麻豆 | 九九热精品免费观看 | 国产亚洲精品一区二区在线播放 | 交换年轻夫妇HD中文字幕 | 国产免费一区不卡在线 | 国产精品最新资源网 | 青青精品视频 | 国产精品天天看特色大片不卡 | 亚洲精品久久玖玖玖玖 | 香蕉久久网 | 国产精品福利短视在线播放频 | 11 13加污女qq看他下面 | 亚洲 欧美 清纯 校园 另类 | 国产日韩欧美在线一二三四 | 亚洲精品第一国产综合高清 | 欧美精品亚洲精品日韩1818 | 日韩一区二区不卡 | 亚洲色欲色欲综合网站 | 男人的视频网站 | 1919gogo女厕盗摄 | 国产日韩免费视频 | 日韩大片免费观看 |