用Jquery訪問WebService并返回Json的代碼第1/3頁
更新時(shí)間:2008年09月15日 22:37:34 作者:
經(jīng)常會(huì)用JavaScript訪問asp.net的Webservice的需求,通常的方法是用asp.net ajax來解決,但asp.net ajax框架在不國內(nèi)并不經(jīng)常被使用。
在我們的應(yīng)用中一般會(huì)是這樣的,使用了jquery作為客戶端框架,ajax請求也通常返回html或者json。html這里就不討論了。返回json一般都是搞一個(gè)handler.ashx來處理請求,拼湊字符串來返回json。從而放棄了ws,因?yàn)閣s返回的是xml,使用起來不方便。
所以我覺著比較完美的解決方法是讓ws返回json而且不用asp.net ajax的客戶端框是比較理想的解決方法。
通過觀測發(fā)現(xiàn)asp.net ajax的客戶端框架請求webservice的時(shí)候返回的是json,為什么webservice沒有返回xml而返回了json呢?抓包分析到,關(guān)鍵在request的headers中 “Content-Type: application/json;utf-8” ,因此webservice就使用了json的序列化,應(yīng)該是“System.Web.Script.Serialization.JavaScriptSerializer”這個(gè)類完成的工作,通過web.config的配置,把*.asmx交給了System.Web.Extensions.Dll。也就是這里還是用了asp.net ajax,不過是用的服務(wù)端部分,我這里直接用的asp.net 3.5
以上都是在啰嗦,具體的方法很簡單,看例子
ws1.asmx
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
namespace test2
{
/// <summary>
/// Summary description for WS1
/// </summary>
[WebService(Namespace = "http://onewww.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class WS1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public TestUser CreateUser(string name,int age)
{
return new TestUser { Name = name, Age = age };
}
}
public class TestUser
{
public string Name { get; set; }
public int Age { get; set; }
}
}
所以我覺著比較完美的解決方法是讓ws返回json而且不用asp.net ajax的客戶端框是比較理想的解決方法。
通過觀測發(fā)現(xiàn)asp.net ajax的客戶端框架請求webservice的時(shí)候返回的是json,為什么webservice沒有返回xml而返回了json呢?抓包分析到,關(guān)鍵在request的headers中 “Content-Type: application/json;utf-8” ,因此webservice就使用了json的序列化,應(yīng)該是“System.Web.Script.Serialization.JavaScriptSerializer”這個(gè)類完成的工作,通過web.config的配置,把*.asmx交給了System.Web.Extensions.Dll。也就是這里還是用了asp.net ajax,不過是用的服務(wù)端部分,我這里直接用的asp.net 3.5
以上都是在啰嗦,具體的方法很簡單,看例子
ws1.asmx
復(fù)制代碼 代碼如下:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
namespace test2
{
/// <summary>
/// Summary description for WS1
/// </summary>
[WebService(Namespace = "http://onewww.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class WS1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
[WebMethod]
public TestUser CreateUser(string name,int age)
{
return new TestUser { Name = name, Age = age };
}
}
public class TestUser
{
public string Name { get; set; }
public int Age { get; set; }
}
}
您可能感興趣的文章:
- 淺談對Jquery+JSON+WebService的使用小結(jié)
- jQuery調(diào)用WebService返回JSON數(shù)據(jù)及參數(shù)設(shè)置注意問題
- 排除JQuery通過HttpGet調(diào)用WebService返回Json時(shí)“parserror”錯(cuò)誤
- jQuery結(jié)合Json提交數(shù)據(jù)到Webservice,并接收從Webservice返回的Json數(shù)據(jù)
- asp.net下使用jquery 的ajax+WebService+json 實(shí)現(xiàn)無刷新取后臺值的實(shí)現(xiàn)代碼
- jQuery調(diào)用Webservice傳遞json數(shù)組的方法
相關(guān)文章
.Net?Core3.0?WebApi?項(xiàng)目框架搭建之使用Serilog替換掉Log4j
Serilog 是一個(gè)用于.NET應(yīng)用程序的日志記錄開源庫,配置簡單,接口干凈,并可運(yùn)行在最新的.NET平臺上,這篇文章主要介紹了.Net?Core3.0?WebApi?項(xiàng)目框架搭建之使用Serilog替換掉Log4j,需要的朋友可以參考下2022-02-02
自動(dòng)類型安全的REST.NET標(biāo)準(zhǔn)庫refit
這篇文章介紹了自動(dòng)類型安全的REST.NET標(biāo)準(zhǔn)庫refit,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
寫一個(gè)含數(shù)字,拼音,漢字的驗(yàn)證碼生成類
本文和大家分享的是一個(gè)集成1:小寫拼音;2:大寫拼音;3:數(shù)字;4:漢字的驗(yàn)證碼生成類。本章例子也會(huì)有一個(gè)mvc使用驗(yàn)證碼校驗(yàn)的場景。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01
四個(gè)常用的.NET的SQLHELPER方法實(shí)例
這篇文章主要介紹了四個(gè)常用的.NET的SQLHELPER方法,在WinForm的實(shí)際開發(fā)中比較常用,需要的朋友可以參考下2014-08-08
ASP.NET 頁面中動(dòng)態(tài)增加的控件、添加事件
在ASP.NET中動(dòng)態(tài)創(chuàng)建一個(gè)控件總是不那么順利,特別是當(dāng)對頁面的Life Cycle不是那么了然的情況下!這里簡單描述一下要求,然后提供一個(gè)解決方案,大家看看有沒有更好的Idea,如果有的話就是我的大幸了,呵呵!2009-07-07
如何在.NET Core應(yīng)用中使用NHibernate詳解
NHibernate 是一個(gè)基于.Net 的針對關(guān)系型數(shù)據(jù)庫的對象持久化類庫。下面這篇文章主要給大家介紹了關(guān)于如何在.NET Core應(yīng)用中使用NHibernate的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-08-08
ASP.NET內(nèi)置對象之Application對象
Application對象是HttpApplicationState類的一個(gè)實(shí)例,它可以產(chǎn)生一個(gè)所有Web應(yīng)用程序都可以存取的變量,這個(gè)變量的可以存取范圍涵蓋全部使用者,也就是說只要正在使用這個(gè)網(wǎng)頁的程序都可以存取這個(gè)變量。2008-09-09
asp.net實(shí)現(xiàn)多個(gè)文件同時(shí)下載功能
這篇文章主要為大家詳細(xì)介紹了asp.net實(shí)現(xiàn)多個(gè)文件同時(shí)下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
ASP.NET?MVC實(shí)現(xiàn)樹形導(dǎo)航菜單
這篇文章介紹了ASP.NET?MVC實(shí)現(xiàn)樹形導(dǎo)航菜單的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-09-09

