Ily*_*okh 4 javascript browser asp.net web-services
我在ASP.NET中编写了Web服务,它有这样的地址:
http://localhost/RouteGen/Service.asmx
Run Code Online (Sandbox Code Playgroud)
Web Service具有Web方法GetMessage,它不接受任何参数并返回字符串.
它可以使用Web服务,我可以从其他ASP.NET应用程序甚至是Android应用程序调用它的方法.
服务器代码:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Service : System.Web.Services.WebService
{
[WebMethod]
public string GetMessage() {
return "Hello World";
}
}
Run Code Online (Sandbox Code Playgroud)
现在我需要GetMessage从javascript 调用web方法.
html页面:(这个网页与网络服务代码没有任何联系,它完全是另一个项目!你可以认为它是用win记事本写的)
...
<body id="body1" onload="initialize()" style="behavior:url(webservice.htc)">
</body>
...
Run Code Online (Sandbox Code Playgroud)
在我调用的initialize()方法中:
...
service_init();
processResult();
Run Code Online (Sandbox Code Playgroud)
还有这个功能:
function service_init()
{
body1.useService("http://localhost/RouteGen/Service.asmx?WSDL","TheService");
body1.TheService.callService("GetMessage");
}
function processResult(result)
{
alert(result);
}
Run Code Online (Sandbox Code Playgroud)
所以我有点:
1)在IE中processResult()返回"undefined"
2)在Chrome和FireFox中它根本不起作用(在useService之后没有出现简单警报)
问题在哪里?如何使javascript正常调用web方法并从不同的浏览器调用?
在Aspx部分,
添加ScriptManager标记,如下所示,
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference path="~/sample.asmx"/>
</Services>
</asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)
在JavaScript中调用Web服务(sample.asmx)如下,
<script language="javascript" type="text/javascript">
function CalledOnAnyClientClickEvent()
{
var parameter1="dsfsfs";
NameSpace1.WebService1.HelloWorld(parameter1,OnSucess,OnFail);
}
function OnSuccess(asd)
{
alert(asd);//result will contain the return parameter from web service
}
function OnFail(asd)
{
alert(asd);
}
</script>
Run Code Online (Sandbox Code Playgroud)
请参阅下面的Asmx部分(sample.asmx),
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Serialization;
using System.Web.Script.Services;
namespace NameSpace1
{
/// <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.
[ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld(string par1)
{
//do your logic here
return "Hello World";
}
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助...