`
isiqi
  • 浏览: 16556836 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Asp.Net Ajax 如何调用WebService

阅读更多

利用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、建立项目WebServiceWebApp项目,如图所示,(我这里用了英文版,最近发现如果用汉语版的话,会出现些问题:1、添加不了Dynamic Data WebApplication,一添加就出错。2、如果把返回为一个集合的存储过程拖放到Linq To SQL Class时,如果不指定返回值,生成的方法名后夹杂些汉语)

2Service1.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>

4Default.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="调用无参方法" />

&nbsp;<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="调用有参方法" />

&nbsp;<asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="调用复合类型" />

&nbsp;<asp:Button ID="Button4" runat="server" OnClick="Button4_Click" Text="调用泛型集合" />

&nbsp;<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>

5Default.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深入浅出系列课程(4):客户端访问WebService(上):基本使用方式

    ASP.NET AJAX 深入浅出系列课程是一个旨在帮助开发者深入了解和熟练掌握ASP.NET AJAX技术的教程。在第四部分,我们重点关注的是客户端如何通过AJAX技术访问WebService,这是Web应用程序中实现异步交互的关键技术。本...

    asp.net2.0 调用websevice 实现天气预报

    1. Default.aspx:ASP.NET页面,包含了用户界面和AJAX调用的代码。 2. Default.aspx.cs:页面的后台代码,实现了调用Web服务的方法。 3. WebService.asmx:定义了获取天气信息的Web服务。 4. Web.config:配置文件,...

    ASP.NET AJAX深入浅出系列课程(6):客户端访问WebService(下):原理与细节

    3. **AJAX与WebService结合**:在本课程中,我们将学习如何使用AJAX技术调用ASP.NET的WebService。这涉及到创建和配置WebService,以及在客户端使用XMLHttpRequest对象或者ASP.NET AJAX的ScriptManager、AjaxMethod...

    Asp.net利用ScriptManager调用webservice

    在Asp.net开发中,有时候我们需要在客户端与服务器端之间进行异步通信,这时Web服务(Web Service)和Ajax技术就显得尤为重要。本示例主要介绍如何在Asp.net环境中,利用ScriptManager组件来调用Web服务,实现客户端...

    【ASP.NET编程知识】ASP.NET如何定时调用WebService服务.docx

    本文为 ASP.NET 开发者提供了一种简单而有效的方法来实现定时调用 WebService 服务,并且还介绍了使用 jQuery 和 Ajax 调用 WebService 服务的方法。 知识点: * 使用 System.Timers.Timer 组件来实现定时调用 ...

    asp.net+jquery+ajax所有调用例子

    此外,ASP.NET还支持通过Web服务(WebService)进行AJAX调用。创建一个ASMX文件,定义一个Web方法: ```csharp [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles....

    Asp.net Ajax框架教程

    ASP.NET AJAX框架是微软提供的一种用于构建富交互Web应用程序的技术,它允许开发者在不刷新整个页面的情况下更新网页的特定部分,提高用户体验。本教程详细介绍了ASP.NET AJAX框架的关键组件和用法,涵盖了一系列...

    Jquery + Ajax调用webService实例代码(asp.net)

    webService中要实现ajax调用,则要加这句代码: // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 [System.Web.Script.Services.ScriptService] 代码下载 /201008/yuanma/WebService2....

    asp.net AJAX博客源码

    ASP.NET AJAX博客源码是一个基于Web服务(Web Service)和.NET AJAX技术的博客系统实现,主要目的是为了提供一种异步交互的用户体验。该系统利用AJAX(Asynchronous JavaScript and XML)技术,允许用户在不刷新整个...

    Asp.net调用WebService例子

    ASP.NET调用WebService是Web应用程序之间进行数据交互和功能扩展的一种常见方式。在这个例子中,我们将探讨如何在ASP.NET环境中创建并使用一个简单的WebService来获取并显示天气信息。这个过程涵盖了几个关键知识点...

    ASP.NET AJAX教程源码

    1. **ScriptManager**:它是ASP.NET AJAX的核心组件,负责管理页面上所有AJAX功能,包括加载JavaScript库,注册AJAX控件和服务端方法调用。 2. **UpdatePanel**:这个控件允许页面的部分区域异步更新,无需整体刷新...

    asp.net ajax 实例

    在ASP.NET AJAX中,我们可以创建一个ASMX服务,然后使用jQuery的$.ajax()函数来调用这个服务。Web服务通常以XML格式返回数据,但也可以是JSON(JavaScript Object Notation),这是一种轻量级的数据交换格式,更适合...

    asp.net ajax 实现

    ASP.NET AJAX(Asynchronous JavaScript and XML)是一种技术框架,它允许开发者在不刷新整个网页的情况下更新页面的部分内容,从而提供更流畅、响应更快的用户体验。本文将深入探讨ASP.NET中实现AJAX请求的三种主要...

    ajax 调用WebService 很简单的demo

    服务端代码通常使用.NET框架,如ASP.NET Web Services(ASMX)或WCF(Windows Communication Foundation)。 标签"ajax WebService"表明这个示例涵盖了Ajax与WebService的结合。在压缩包文件"demo"中,可能包含了...

    Asp.Net的webService简单示例

    本示例主要展示了如何在C#中创建一个简单的Web服务,并利用jQuery进行调用,以及如何返回自定义的JSON数据,而非依赖ASP.NET默认的`{d:content}`格式。 首先,创建一个新的ASP.NET Web服务项目。在Visual Studio中...

    ASP.net Ajax开发

    ASP.NET AJAX(Asynchronous JavaScript and XML)是一种微软提供的技术框架,用于构建富客户端Web应用程序,它结合了服务器端的ASP.NET技术与客户端的JavaScript技术,实现了页面的部分更新,提升了用户体验。...

    ASP.NET AJAX深入浅出

    在此基础上,文章进一步探讨了ASP.NET 2.0 AJAX Extensions的作用,包括序列化与反序列化、客户端对WebService的访问、以及服务器端AJAX控件如ScriptManager、UpdatePanel和Extender的使用。这些控件和功能简化了...

    ASP.net Ajax开发电子书

    ASP.NET AJAX,全称为ASP.NET Asynchronous JavaScript and XML,是一种微软提供的技术框架,用于构建具有交互性和异步更新功能的Web应用程序。它扩展了传统的ASP.NET框架,允许开发者利用JavaScript和XML来创建更加...

Global site tag (gtag.js) - Google Analytics