|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你可以先看看这篇文章(软微学院生涯-三朝元老经验谈),打不开再跟我说。(我的意思是想让她自己先稍微了解一下到底现在各个方向学的工具以及以后要做的工具大概是什么,因为喜欢做什么样的事其实自己最清楚的)javascript|web .net下用javascript挪用webservice的话,要用到webservicebehavior。上面以一个例子解说之,对照复杂
1、起首,要创立一个webservice,好比
<%@WebServiceLanguage="C#"class=MyMath%>
usingSystem;
usingSystem.Web.Services;
publicclassMyMath{
[WebMethod]
publicintadd(inta,intb)
{
returna+b;
}
[WebMethod]
publicintsubtract(inta,intb)
{
returna-b;
}
}
然后公布,先失掉其wsdl。
2、起首,我们要下载webbehavior.htc这个文件(能够到http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/default.asp.)
往下载,然后放到你的web以后目次下然后在要挪用webserice的页面中,修正以下
<body>
<divid="addservice"style="behavior:url(webservice.htc)"></div>
</body>
这里我们将divid定名为成心义的称号,而且指定style为webservice举动。接着,我们要誊写javascript来挪用webserice了:
起首,我们在javascript中,挪用其wsdladdservice.useService("http://localhost/services/math.asmx?WSDL","MyMath");利用id.useService(WSDLL路径,复杂的定名体例);
我们之前设定的id是addservice,而为了给客户端挪用便利,我们这里起了称号,叫MyMath。而为了包管能准确挪用webserice,必需在body里的onload事务里,即刻加载处置webservice挪用的javascript,以下
<scriptlanguage="JavaScript">
functioninit()
{
addservice.useService("http://localhost/services/math.asmx?WSDL","MyMath");}
</script>
<body>
<divid="service"style="behavior:url(webservice.htc)">
</div>
</body>
在下面,我们经由过程webservice举动,起首失掉了前往webservice的wsdl,接上去我们要举行挪用了,挪用的格局以下:iCallID=id.FriendlyName.callService([CallbackHandler,]"MethodName",Param1,Param2,...);
这里id是我们在div里设置的id,而FridndbyName是我们方才为方面而起的命,这里就是MyMath了,而CallbackHandler是利用回调函数的历程名,假如无设置的话,则默许是利用onresult所挪用的办法来举行处置,下文会讲到,而param1,,param2等则是说传进的参数了,如:
<SCRIPTlanguage="JavaScript">
//Allthesevariablesmustbeglobal,
//becausetheyareusedinbothinit()andonresult().
variCallID=0;
varintA=5;
varintB=6;
functioninit()
{
//Establishthefriendlyname"MyMath"fortheWebServiceURL
service.useService("/services/math.asmx?WSDL","MyMath");
//Thefollowingmethoddoesntspecifyacallbackhandler,soonWSresult()isused
iCallID=service.MyMath.callService("add",intA,intB);
}
functiononWSresult()
{
//ifthereisanerror,andthecallcamefromthecall()ininit()
if((event.result.error)&&(iCallID==event.result.id))
{
//Pulltheerrorinformationfromtheevent.result.errorDetailproperties
varxfaultcode=event.result.errorDetail.code;
varxfaultstring=event.result.errorDetail.string;
varxfaultsoap=event.result.errorDetail.raw;
//Addcodetohandlespecificerrorcodeshere
}
//iftherewasnoerror,andthecallcamefromthecall()ininit()
elseif((!event.result.error)&&(iCallID==event.result.id))
{
//Showthearithmetic!
alert(intA+++intB+=+event.result.value);
}
else
{
alert("Somethingelsefiredtheevent!");
}
}
</SCRIPT>
<body>
<divid="service"style="behavior:url(webservice.htc)"onresult="onWSresult()">
</div>
</body>
注重,用onresult体例前往的话,要在div部分的onresult中指定处置的办法,这里是用onWsresult()办法,个中依据前往的信息来判别是不是堕落,堕落的话则显现。
假如用回调的话,则以下处置
<SCRIPTlanguage="JavaScript">
//Allthesevariablesmustbeglobal,
//becausetheyareusedinbothinit()andonResult().
variCallID=0;
varintA=5;
varintB=6;
functioninit()
{
//Establishthefriendlyname"MyMath"fortheWebServiceURL
service.useService("/services/math.asmx?WSDL","MyMath");
//Thefollowingusesacallbackhandlernamed"mathResults"
iCallID=service.MyMath.callService(mathResults,"add",intA,intB);
}
functionmathResults(result)
{
//ifthereisanerror,andthecallcamefromthecall()ininit()
if(result.error)
{
//Pulltheerrorinformationfromtheevent.result.errorDetailproperties
varxfaultcode=result.errorDetail.code;
varxfaultstring=result.errorDetail.string;
varxfaultsoap=result.errorDetail.raw;
//Addcodetohandlespecificerrorcodeshere
}
//iftherewasnoerror
else
{
//Showthearithmetic
alert(intA+++intB+"="+result.value);
}
}
</SCRIPT>
<body>
<divid="service"style="behavior:url(webservice.htc)">
</div>
</body>
实不相瞒,Java是我见过的执行效率最低的程序设计语言,前不久在CSDN论坛上有个评测,计算9999的阶乘,同样的循环算法,Java的耗时是.NET的5倍。 |
|