Я пытаюсь вызвать WebMethod
из JavaScript. На данный момент у меня есть:
EMSWebService.asmx:
namespace EMSApplication.Web.WebServices
{
/// <summary>
/// Holds the Webservice methods of EMSApplication
</summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class EMSWebService : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}
На странице aspx я добавил следующее:
<asp:ScriptManager ID="ScriptManager" runat="server">
<Services>
<asp:ServiceReference Path="~/WebServices/EMSWebService.asmx" />
</Services>
</asp:ScriptManager>
<input onclick="callWebMethod();" id="btn" type="button" value="Click Me" />
И JavaScript:
<script type="text/javascript">
function callWebMethod() {
EMSApplication.Web.WebServices.EMSWebService.HelloWorld(OnComplete, OnError);
}
function OnComplete(result) {
alert(result);
}
function OnError(result) {
alert(result.get_message());
}
</script>
Но метод не выполняется. Я получаю следующую ошибку JavaScript:
EMSApplication не определено.
Я что-то упустил? Нужно ли мне делать какую-то другую конфигурацию?
Структура проекта показана ниже:
JavaScript и компоненты находятся в файле Login.aspx.
Имеет ли какое-либо значение URL-адрес [WebService(Namespace = "http://tempuri.org/")]
Изменить:
Я также пробовал это с помощью jQuery и модифицировал страницу aspx следующим образом:
$(document).ready(function () {
$("#btn").click(function () {
$.ajax({
type: "POST",
url: "../WebServices/EMSWebService.asmx/HelloWorld",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert(response.d);
},
failure: function (msg) {
alert(msg.d);
}
});
return true;
});
});
Я написал System.Diagnostics.Debug.WriteLine("Hello World");
внутри WebMethod
выполняется, то есть печатает «Hello World» в окне вывода Visual Studio, но я не получаю никакого предупреждающего сообщения.