jQuery调用ASP.NET WebService返回JSON的配置与实现

作者:桌面漫游时间:2026-10-23 05:51:22浏览:366

本文介绍如何利用jQuery调用ASP.NET WebService并获取JSON数据。通过配置Web.config将asmx文件映射至System.Web.Extensions,并在服务端添加ScriptService特性,可使WebService直接返回JSON而非XML,从而避免手动拼凑字符串,简化客户端处理。

jQuery调用WebService返回JSON的配置原理

在常规应用开发中,前端通常采用jQuery作为客户端框架,Ajax请求的响应格式多为HTML或JSON。对于HTML响应的处理此处略过。若需返回JSON,传统做法是编写一个.ashx处理程序,手动拼接字符串以生成JSON数据,这种做法往往导致开发者放弃使用Web Service,因为Web Service默认返回XML格式,处理起来相对繁琐。


因此,理想的解决方案是让Web Service直接返回JSON格式数据,同时不依赖ASP.NET AJAX的客户端框架,这样既能简化前端处理,又能保持后端服务的规范性。


通过观察发现,当使用ASP.NET AJAX客户端框架请求Web Service时,返回的数据格式为JSON。分析其原理可知,关键在于HTTP请求头中的“Content-Type: application/json;utf-8”字段。这使得Web Service启用了JSON序列化机制,具体由“System.Web.Script.Serialization.JavaScriptSerializer”类完成。通过配置web.config文件,将*.asmx文件映射到System.Web.Extensions.dll,即可实现服务端对JSON的支持。尽管此处仍使用了ASP.NET AJAX的服务端组件,但本文基于ASP.NET 3.5环境进行演示。


上述背景介绍较为冗长,具体实现方法非常简单,请参考以下示例。


WebService实现代码示例

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; }
} 
} 

1

23下一页阅读全文

作者最新文章