利用Asp.Net自带的Ajax调用WebService 中的方法非常方便,甚至不需要任何Javascript代码,主要是下面的第4步里,如何调用WebService
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="路径/方法名1" />
<asp:ServiceReference Path="路径/方法名2" />
</Services>
</asp:ScriptManager>
1、建立项目WebService和WebApp项目,如图所示,(我这里用了英文版,最近发现如果用汉语版的话,会出现些问题:1、添加不了Dynamic Data WebApplication,一添加就出错。2、如果把返回为一个集合的存储过程拖放到Linq To SQL Class时,如果不指定返回值,生成的方法名后夹杂些汉语)
2、Service1.asmx代码为:(这部分其实和上篇的代码是一样的)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
namespace WebService1
{
/// <summary>
/// Summary description for Service1
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
//无参方法
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
//有参方法1
[WebMethod]
public int Add(int a, int b)
{
return a + b;
}
//有参方法2
[WebMethod]
public int Sum(int x)
{
int sum = 0;
for (int i = 0; i <= x; i++)
{
sum += i;
}
return sum;
}
// 返回一个复合类型
[WebMethod]
public Student GetStudentByStuNo(string stuNo)
{
if (stuNo == "001")
return new Student { StuNo = "001", StuName = "张三" };
if (stuNo == "002")
return new Student { StuNo = "002", StuName = "李四" };
return null;
}
//返回返回泛型集合的
[WebMethod]
public List<Student> GetList()
{
List<Student> list = new List<Student>();
list.Add(new Student() { StuNo = "001", StuName = "张三" });
list.Add(new Student() { StuNo = "002", StuName = "李四" });
list.Add(new Student() { StuNo = "003", StuName = "王五" });
return list;
}
//返回DataSet
[WebMethod]
public DataSet GetDataSet()
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("StuNo", Type.GetType("System.String"));
dt.Columns.Add("StuName", Type.GetType("System.String"));
DataRow dr = dt.NewRow();
dr["StuNo"] = "001"; dr["StuName"] = "张三";
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["StuNo"] = "002"; dr["StuName"] = "李四";
dt.Rows.Add(dr);
ds.Tables.Add(dt);
return ds;
}
}
public class Student
{
public string StuNo { get; set; }
public string StuName { get; set; }
}
}
3、打开WebApp项目AjaxInvokeWebService里的web.config文件,在system.web节下面加上以下配置
<webServices >
<protocols >
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
</webServices>
4、Default.aspx代码如下,这部分需要注意,ScriptManager必需紧跟放在form之后,<Services></Services>中的<asp:ServiceReference Path="" />用来调用WebService。一个WebService方法对应一个<asp:ServiceReference Path="" />。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AjaxInvokeWebService._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>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="http://localhost:1832/Service1.asmx/HelloWorld" />
<asp:ServiceReference Path="http://localhost:1832/Service1.asmx/Add" />
<asp:ServiceReference Path="http://localhost:1832/Service1.asmx/GetStudentByStuNo" />
<asp:ServiceReference Path="http://localhost:1832/Service1.asmx/GetList" />
<asp:ServiceReference Path="http://localhost:1832/Service1.asmx/GetDataSet" />
</Services>
</asp:ScriptManager>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="调用无参方法" />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="调用有参方法" />
<asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="调用复合类型" />
<asp:Button ID="Button4" runat="server" OnClick="Button4_Click" Text="调用泛型集合" />
<asp:Button ID="Button5" runat="server" OnClick="Button5_Click" Text="调用DataSet类型" />
<br />
<asp:Label ID="lblResult" runat="server"></asp:Label>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
5、Default.aspx.cs代码如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace AjaxInvokeWebService
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//调用无参方法
lblResult.Text =new localhost.Service1().HelloWorld();
}
protected void Button2_Click(object sender, EventArgs e)
{
//调用有参方法
lblResult.Text = new localhost.Service1().Add(2, 3).ToString();
}
protected void Button3_Click(object sender, EventArgs e)
{
//调用复合类型
localhost.Student s = new localhost.Student();
s = new localhost.Service1().GetStudentByStuNo("001");
lblResult.Text = "学号="+s.StuNo + ",姓名=" + s.StuName;
}
protected void Button4_Click(object sender, EventArgs e)
{
//调用泛型集合
GridView1.DataSource = new localhost.Service1().GetList();
GridView1.DataBind();
}
protected void Button5_Click(object sender, EventArgs e)
{
//调用DataSet类型
GridView1.DataSource = new localhost.Service1().GetDataSet();
GridView1.DataBind();
}
}
}
运行效果为
参考:
http://blog.163.com/figo_2007@126/blog/static/231807652009324959694/
http://wind721888.blog.163.com/blog/static/31574639201051355844676/?fromdm&fromSearch&isFromSearchEngine=yes
分享到:
相关推荐
ASP.NET AJAX 深入浅出系列课程是一个旨在帮助开发者深入了解和熟练掌握ASP.NET AJAX技术的教程。在第四部分,我们重点关注的是客户端如何通过AJAX技术访问WebService,这是Web应用程序中实现异步交互的关键技术。本...
1. Default.aspx:ASP.NET页面,包含了用户界面和AJAX调用的代码。 2. Default.aspx.cs:页面的后台代码,实现了调用Web服务的方法。 3. WebService.asmx:定义了获取天气信息的Web服务。 4. Web.config:配置文件,...
3. **AJAX与WebService结合**:在本课程中,我们将学习如何使用AJAX技术调用ASP.NET的WebService。这涉及到创建和配置WebService,以及在客户端使用XMLHttpRequest对象或者ASP.NET AJAX的ScriptManager、AjaxMethod...
在Asp.net开发中,有时候我们需要在客户端与服务器端之间进行异步通信,这时Web服务(Web Service)和Ajax技术就显得尤为重要。本示例主要介绍如何在Asp.net环境中,利用ScriptManager组件来调用Web服务,实现客户端...
本文为 ASP.NET 开发者提供了一种简单而有效的方法来实现定时调用 WebService 服务,并且还介绍了使用 jQuery 和 Ajax 调用 WebService 服务的方法。 知识点: * 使用 System.Timers.Timer 组件来实现定时调用 ...
此外,ASP.NET还支持通过Web服务(WebService)进行AJAX调用。创建一个ASMX文件,定义一个Web方法: ```csharp [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles....
ASP.NET AJAX框架是微软提供的一种用于构建富交互Web应用程序的技术,它允许开发者在不刷新整个页面的情况下更新网页的特定部分,提高用户体验。本教程详细介绍了ASP.NET AJAX框架的关键组件和用法,涵盖了一系列...
webService中要实现ajax调用,则要加这句代码: // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 [System.Web.Script.Services.ScriptService] 代码下载 /201008/yuanma/WebService2....
ASP.NET AJAX博客源码是一个基于Web服务(Web Service)和.NET AJAX技术的博客系统实现,主要目的是为了提供一种异步交互的用户体验。该系统利用AJAX(Asynchronous JavaScript and XML)技术,允许用户在不刷新整个...
ASP.NET调用WebService是Web应用程序之间进行数据交互和功能扩展的一种常见方式。在这个例子中,我们将探讨如何在ASP.NET环境中创建并使用一个简单的WebService来获取并显示天气信息。这个过程涵盖了几个关键知识点...
1. **ScriptManager**:它是ASP.NET AJAX的核心组件,负责管理页面上所有AJAX功能,包括加载JavaScript库,注册AJAX控件和服务端方法调用。 2. **UpdatePanel**:这个控件允许页面的部分区域异步更新,无需整体刷新...
在ASP.NET AJAX中,我们可以创建一个ASMX服务,然后使用jQuery的$.ajax()函数来调用这个服务。Web服务通常以XML格式返回数据,但也可以是JSON(JavaScript Object Notation),这是一种轻量级的数据交换格式,更适合...
ASP.NET AJAX(Asynchronous JavaScript and XML)是一种技术框架,它允许开发者在不刷新整个网页的情况下更新页面的部分内容,从而提供更流畅、响应更快的用户体验。本文将深入探讨ASP.NET中实现AJAX请求的三种主要...
服务端代码通常使用.NET框架,如ASP.NET Web Services(ASMX)或WCF(Windows Communication Foundation)。 标签"ajax WebService"表明这个示例涵盖了Ajax与WebService的结合。在压缩包文件"demo"中,可能包含了...
本示例主要展示了如何在C#中创建一个简单的Web服务,并利用jQuery进行调用,以及如何返回自定义的JSON数据,而非依赖ASP.NET默认的`{d:content}`格式。 首先,创建一个新的ASP.NET Web服务项目。在Visual Studio中...
ASP.NET AJAX(Asynchronous JavaScript and XML)是一种微软提供的技术框架,用于构建富客户端Web应用程序,它结合了服务器端的ASP.NET技术与客户端的JavaScript技术,实现了页面的部分更新,提升了用户体验。...
在此基础上,文章进一步探讨了ASP.NET 2.0 AJAX Extensions的作用,包括序列化与反序列化、客户端对WebService的访问、以及服务器端AJAX控件如ScriptManager、UpdatePanel和Extender的使用。这些控件和功能简化了...
ASP.NET AJAX,全称为ASP.NET Asynchronous JavaScript and XML,是一种微软提供的技术框架,用于构建具有交互性和异步更新功能的Web应用程序。它扩展了传统的ASP.NET框架,允许开发者利用JavaScript和XML来创建更加...