net framework 在JavaScript中调用ASP.NET WebService的简单方法
在JavaScript中调用ASP.NET WebService的简单方法
客户端 JavaScript 调用 ASP NET WebService 的方法除了采用 WebServer htc 和 构造 SOAPAction 的方法外 下面介绍一个采用 Ajax 调用的简单方法 并且可以传递参数 其实 ASP NET WebService 就是一个网站 所以 Request 对象是可用的 这样 传递参数就很容易了 下面是一个WebService asmx的代码
ASMX 代码
<%@ WebService Language= C# CodeBehind= WebService asmx cs Class= WebService %>
C# 代码
using System;
using System Collections Generic;
using System Linq;
using System Web;
using System Web Services;
using System Data;
/// <summary>
/// Summary description for WebService
/// </summary>
[WebService(Namespace = )]
[WebServiceBinding(ConformsTo = WsiProfiles BasicProfile _ )]
[System ComponentModel ToolboxItem(false)]
// To allow this Web Service to be called from script using ASP NET AJAX unment the following line
// [System Web Script Services ScriptService]
public class WebService : 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(Int )));
dt Columns Add(new DataColumn( text typeof(string)));
for (int i = ; i < ; i++)
{
dr = dt NewRow();
dr[ ] = i;
dr[ ] = 列表项目 + 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[ param ];
List<User> u_list = new List<User>();
for (int i = ; i < ; 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 PUBLIC //W C//DTD XHTML Transitional//EN transitional dtd >
< xmlns= >
<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 WebService asmx/GetTestUser?param=net_lover true);
xmlHttp setRequestHeader( Connection close );
xmlHttp onreadystatechange = function () {
if (xmlHttp readyState == ) {
if (xmlHttp status == ) {
var userList = xmlHttp responseXML getElementsByTagName( User );

for (i = ; i < userList length; i++) {
document getElementById( get ) innerHTML += userList[i] getElementsByTagName( Name )[ ] firstChild nodeValue + ;
document getElementById( get ) innerHTML += userList[i] getElementsByTagName( Title )[ ] firstChild nodeValue + <br/> ;
}
}
}
};
xmlHttp send();
}
function AsynPostRequest() {
createXMLHttpRequest();
if (xmlHttp == null) {
alert( 不能创建 XmlHttpRequest 对象 );
return;
}
var data = param =abc ;
xmlHttp open( POST WebService asmx/GetTestUser?t= + Date parse(new Date()) true);
xmlHttp setRequestHeader( Content type application/x form urlencoded );
xmlHttp setRequestHeader( Content length data length);
xmlHttp setRequestHeader( Connection close );
xmlHttp onreadystatechange = function () {
if (xmlHttp readyState == ) {
if (xmlHttp status == ) {
var userList = xmlHttp responseXML getElementsByTagName( User );
for (i = ; i < userList length; i++) {
document getElementById( post ) innerHTML += userList[i] getElementsByTagName( Name )[ ] firstChild nodeValue + ;
document getElementById( post ) innerHTML += userList[i] getElementsByTagName( Title )[ ] 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= get ></div>
<div id= post ></div>
</body>
</>
需要注意的是 使用此方法需要在nfig里加入以下的配置
nfig 代码
<system web>
<webServices>
<protocols>
<add name = HttpPost />
<add name = HttpGet />
</protocols>
</webServices>
lishixinzhi/Article/program/net/201311/12604- 上一篇
古代皇帝死后怎么处理 死后十余年才被下葬的皇帝?元修在位时经历了什么?
死后十余年才被下葬的皇帝?元修在位时经历了什么? 死后十余年才被下葬的皇帝?元修在位时经历了什么?接下来跟着历史新知小编一起欣赏。 gt 我们都知道历代皇帝去世之后都会得到安葬,但是你听说过死后十余年
- 下一篇
分手了总是会想起他 跟前男友分开十年了为什么最近总想起他,我跟前男友是一见钟情,刚开我们在一起很开心,可是我在他面前!
跟前男友分开十年了为什么最近总想起他,我跟前男友是一见钟情,刚开我们在一起很开心,可是我在他面前 跟前男友分开十年了为什么最近总想起他,我跟前男友是一见钟情,刚开我们在一起很开心,可是我在他面前,希望