一起谈.NET技术,JavaScript 调用 ASP.NET WebService 的简单方法

简介:   客户端 JavaScript 调用 ASP.NET WebService 的方法除了采用 WebServer.htc 和构造 SOAPAction 的方法外,下面介绍一个采用 Ajax调用的简单方法,并且可以传递参数。

  客户端 JavaScript 调用 ASP.NET WebService 的方法除了采用 WebServer.htc 和构造 SOAPAction 的方法外,下面介绍一个采用 Ajax调用的简单方法,并且可以传递参数。其实,ASP.NET WebService 就是一个网站,所以,Request 对象是可用的,这样,传递参数就很容易了。下面是一个WebService1.asmx的代码:

  ASMX 代码:

 
  
<% @ WebService Language = " C# " CodeBehind = " WebService1.asmx.cs " Class = " WebService1 " %>
  C#代码:
 
    
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;

/// <summary>
/// Summary description for WebService1
/// </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 WebService1 : System.Web.Services.WebService
{
[WebMethod]
// 字符串返回测试
public string GetServerTime()
{
return " 当前服务器时间: " + DateTime.Now.ToString();
}

[WebMethod]
// long 类型返回测试
public long GetServerTimeTicks()
{
return DateTime.Now.Ticks;
}

[WebMethod]
// Datatable返回测试
public DataTable GetTestDataTable()
{
DataTable dt
= new DataTable( " TestTable " );
DataRow dr;
dt.Columns.Add(
new DataColumn( " id " , typeof (Int32)));
dt.Columns.Add(
new DataColumn( " text " , typeof ( string )));
for ( int i = 0 ; i < 6 ; i ++ )
{
dr
= dt.NewRow();
dr[
0 ] = i;
dr[
1 ] = " 列表项目 " + i.ToString();
dt.Rows.Add(dr);
}
return dt;
}

[WebMethod]
// List 类型测试
public List < User > GetTestUser()
{
// 传递参数传测试
string param = this .Context.Request.QueryString[ " param " ];
if (param == null ) param = this .Context.Request.Form[ " param1 " ];
List
< User > u_list = new List < User > ();
for ( int i = 0 ; i < 10 ; i ++ )
{
User u
= new User();
u.Name
= " LoginName " + i.ToString() + " param = " + param;
u.Title
= " 孟宪会 " + i.ToString();
u_list.Add(u);
}
return u_list;
}

// 定义一个对象 User
public class User
{
public String Name { get ; set ; }
public String Title { get ; set ; }
}
}
  HTML 代码:
 
    
<! 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 > JavaScript 调用 ASP.NET Web 服务测试 </ title >
< script type ="text/javascript" >
var xmlHttp = null ;
function createXMLHttpRequest() {
try {
if (window.XMLHttpRequest)
xmlHttp
= new XMLHttpRequest();
else if (window.ActiveXObject)
xmlHttp
= new ActiveXObject( " Microsoft.XMLHTTP " );
}
catch (ex) { }
}

function AsynRequest() {
createXMLHttpRequest();
if (xmlHttp == null ) {
alert(
" 不能创建 XmlHttpRequest 对象 " );
return ;
}
xmlHttp.open(
" GET " , " WebService1.asmx/GetTestUser?param=net_lover " , true );
xmlHttp.setRequestHeader(
" Connection " , " close " );
xmlHttp.onreadystatechange
= function () {
if (xmlHttp.readyState == 4 ) {
if (xmlHttp.status == 200 ) {
var userList = xmlHttp.responseXML.getElementsByTagName( " User " );
for (i = 0 ; i < userList.length; i ++ ) {
document.getElementById(
" get1 " ).innerHTML += userList[i].getElementsByTagName( " Name " )[ 0 ].firstChild.nodeValue + " " ;
document.getElementById(
" get1 " ).innerHTML += userList[i].getElementsByTagName( " Title " )[ 0 ].firstChild.nodeValue + " <br/> " ;
}
}
}
};
xmlHttp.send();
}

function AsynPostRequest() {
createXMLHttpRequest();
if (xmlHttp == null ) {
alert(
" 不能创建 XmlHttpRequest 对象 " );
return ;
}
var data = " param1=abc " ;
xmlHttp.open(
" POST " , " WebService1.asmx/GetTestUser?t= " + Date.parse( new Date()), true );
xmlHttp.setRequestHeader(
" Content-type " , " application/x-www-form-urlencoded " );
xmlHttp.setRequestHeader(
" Content-length " , data.length);
xmlHttp.setRequestHeader(
" Connection " , " close " );
xmlHttp.onreadystatechange
= function () {
if (xmlHttp.readyState == 4 ) {
if (xmlHttp.status == 200 ) {
var userList = xmlHttp.responseXML.getElementsByTagName( " User " );
for (i = 0 ; i < userList.length; i ++ ) {
document.getElementById(
" post1 " ).innerHTML += userList[i].getElementsByTagName( " Name " )[ 0 ].firstChild.nodeValue + " " ;
document.getElementById(
" post1 " ).innerHTML += userList[i].getElementsByTagName( " Title " )[ 0 ].firstChild.nodeValue + " <br/> " ;
}
}
}
};
xmlHttp.send(data);
}
</ script >
</ head >
< body >
< input type ="button" value ="GET 方法调用" onclick ="AsynRequest()" />
< input type ="button" value ="POST方法调用" onclick ="AsynPostRequest()" />
< div id ="get1" ></ div >
< div id ="post1" ></ div >
</ body >
</ html >
  需要注意的是:使用此方法需要在web.config里加入以下的配置:
 
     
< system.web >
< webServices >
< protocols >
< add name = "HttpPost" />
< add name = "HttpGet" />
</ protocols >
</ webServices >
</ system.web >
目录
相关文章
|
6月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
196 0
|
10月前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
136 6
|
10月前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
128 6
|
10月前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
544 5
|
11月前
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
209 3
|
11月前
|
敏捷开发 缓存 中间件
.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素
本文深入探讨了.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素,并通过企业级应用和Web应用开发的实践案例,展示了如何在实际项目中应用这些模式,旨在为开发者提供有益的参考和指导。
109 3
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
385 0
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
199 7
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
221 0
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
166 0