【发布时间】:2015-11-02 16:20:52
【问题描述】:
我有简单的网络服务:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace fmNVBwebSrv
{
/// <summary>
/// Summary description for fm
/// </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 fm : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld(string callerName)
{
return "Hello World";
}
}
}
我正在尝试从 javaScript 中调用它:
<head runat="server">
<title>Web Service call from client-side JavaScript</title>
<script language="javascript" type="text/javascript">
function SendRequest()
{
fm.HelloWorld(form1.MyTextBox.value, OnComplete, OnError,
OnTimeOut);
}
function OnComplete(arg)
{
alert(arg);
}
function OnTimeOut(arg)
{
alert("timeOut has occured");
}
function OnError(arg)
{
alert("error has occured: " + arg._message);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="http://localhost:55661/fm.asmx" />
</Services>
</asp:ScriptManager>
<div>
<input type="text" value="" id="MyTextBox" />
<input type="button" value="Send Request to the Web Service"
id="RequestButton" onclick="return SendRequest()" />
</div>
</form>
</body>
我在控制台Uncaught ReferenceError: fm is not defined 中遇到错误。我是 Java Script 的新手。那里缺少什么?
【问题讨论】:
-
@haraman 这不是一个好的复制品,因为这个问题不适用于 ASP.Net。虽然答案也适用于 AS.Net,但 OP 可能对调用 Web 服务的 ASP.Net 方式更感兴趣。
-
我认为web方法需要是静态的。
-
@JohnPaul 不,它不需要是静态的。有关 Microsoft 的完整示例,请参阅我的答案中的链接。
标签: javascript asp.net web-services