ASP.NET中JS简单调用webservices的方法

文地址:ASP.NET中JS简单调用webservices的方法  




嗯,JS调用WebService一共有两种做法吧,呵呵,我就知道这两种,路过的朋友如果知道还有其它的方法,还请指点下,共同进步么,呵呵。嗯,直接贴源码吧。
法一:
<%@
Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default"
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1"
runat="server">

<title>测试javascript调用WebService</title>

<script type="text/javascript" language=javascript>

function test()

{

//实际上HelloWorld函数中只有一个参数,这里的第2个"test2"是用来接收返回值的

//如果没有返回值则不需要

WebService.HelloWorld("Qinggeer",test2);

}
function test2(str)

{

alert(str);
}

</script>
</head>
<body>
<form
id="form1" runat="server">
<asp:ScriptManager
ID="ScriptManager1"
runat="server">

<Services>

<asp:ServiceReference Path="WebService.asmx"
/>

</Services>

</asp:ScriptManager>
<input id="Button1"
type="button" value="button" onclick="javascript:test();"
/>

</form>
</body>
</html>
WebService代码:

using
System;
using System.Web;
using System.Collections;
using
System.Web.Services;
using System.Web.Services.Protocols;


///
<summary>
/// WebService 的摘要说明
///
</summary>
[WebService(Namespace =
"http://tempuri.org/")]
[WebServiceBinding(ConformsTo =
WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public
class WebService : System.Web.Services.WebService {


public WebService () {


//如果使用设计的组件,请取消注释以下行

//InitializeComponent();
}


[WebMethod]
public string HelloWorld(string str)
{
return
str;
}

[WebMethod]
public string SayHello(string
Name)
{

return "Hello " + Name;
}

}
法二:
<%@ Page
Language="C#" CodeFile="Test.aspx.cs" Inherits="Test" %>

<!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>
<title>
Call
webservice with javascript and
xmlhttp.
</title>
</head>

<script
language="javascript" type="text/javascript">
function
RequestByGet(url,data)

{
var
xmlhttp;

try

{

xmlhttp= new
ActiveXObject("Microsoft.XMLHTTP");

}

catch(e)

{

try

{

xmlhttp=new
ActiveXObject("Msxml2.XMLHTTP");

}

catch(E)

{

xmlhttp=null;

}

}

if(!xmlhttp&&typeof(XMLHttpRequest)!=="undefined")

{

xmlhttp=new
XMLHttpRequest();

}

xmlhttp.Open("GET",url,
false);

xmlhttp.Send(data);

var result =
xmlhttp.status;

if(result==200)

{

document.write(xmlhttp.responseText);

}
xmlhttp
= null;

}


function RequestByPost(url,value)

{
var
xmlhttp;

try{

xmlhttp= new
ActiveXObject("Microsoft.XMLHTTP");

}

catch(e)

{

try

{

xmlhttp=new
ActiveXObject("Msxml2.XMLHTTP");

}

catch(E)

{

xmlhttp=null;

}

}

if(!xmlhttp&&typeof(XMLHttpRequest)!=="undefined")

{

xmlhttp=new
XMLHttpRequest();

}

xmlhttp.Open("POST",url,
false);

xmlhttp.SetRequestHeader ("Content-Type","text/xml;
charset=gb2312");

xmlhttp.Send(data);

document.write(
xmlhttp.responseText);

}
</script>
<body>
<input type="button"
value="CallWebserviceByGet"
onClick="RequestByGet('http://localhost:2096/AJAXEnabledWebSite1/WebService.asmx/SayHello?Name=Qinggeer',null)">

</body>

</html>

嗯,第二种方法的,如果调用不成功或提示“因
URL 意外地以xxx结束,请求格式无法识别”,要在webservice的 <system.web>
节点下加入

<webServices>

<protocols>

<add name= "HttpPost"
/>

<add name= "HttpGet"
/>

</protocols>
</webServices>

posted on 2012-07-10 10:30  血吸虫  阅读(803)  评论(0编辑  收藏  举报

导航