Я создал WebMethod в коде - позади файла моей страницы как таковой:
[System.Web.Services.WebMethod()]
public static string Test()
{
return "TEST";
}
Я создал следующую страницу HTML для проверения его:
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"/></script>
<script type="text/javascript">
function test() {
$.ajax({
type: "POST",
url: "http://localhost/TestApp/TestPage.aspx/Test",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "text",
success: function(msg) {
alert(msg.d);
}
});
}
</script>
</head>
<body>
<button onclick="test();">Click Me</button>
</body>
</html>
Когда я нажимаю кнопку, Ajax исчерпывает, но ничто не возвращается. Когда я отлаживаю свой код, метод Test()
даже не становится названным. Какие-либо идеи?
попробуйте
url: "TestPage.aspx/Test"
или другой относительный URL-адрес, который попадет на вашу страницу.
Возможно, вы случайно нарушили ту же политику происхождения .
Кроме того, хотя вас еще нет, вы ожидаете объект d: wrapped. Как бы то ни было, вы просто получите строку.
Это должно доставить вас туда, куда вы хотите.
function test() {
$.ajax({
type: "POST",
url: "TestPage.aspx/Test",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
alert(msg.d);
}
});
}
Я думаю, что тип данных должен быть "json". Добавьте функцию ошибки, чтобы узнать, какой статус ошибки вы получите, например, 404 не найден, 500 ошибка сервера и т. Д.
Я сделал эту функцию javascript для вызова WebMethods с помощью jQuery:
function pageMethod(fn, params, successFn, errorFn) {
var pagePath = window.location.pathname;
var jsonData = $.toJSON(params);
$.ajax({
type: "POST",
url: pagePath + "/" + fn,
contentType: "application/json; charset=utf-8",
data: jsonData,
dataType: "json",
success: successFn,
error: errorFn
});
}
Эта сериализация $ .toJson реализуется плагином jquery.json-1.3.
Как видите, dataType должен быть "json"
Если PageMethods правильно зарегистрированы на вашей странице, вы должны иметь возможность вызывать их с помощью зарегистрированного Microsoft объекта под названием PageMethods.
Ваш javascript должен запускаться после того, как страница aspx загрузит все библиотеки Microsoft. Когда они загружены, вы можете вызвать свой PageMethod следующим образом:
PageMethods.Test(function() OnSucceeded{}, function() OnFailed{});
Вот ссылка на лучшие примеры:
http://www.junasoftware.com/blog/using-jquery-ajax-and-page-methods-with-a-asp.net-webservice.aspx
Если вы еще не сделали этого, я настоятельно рекомендую использовать Firebug для отладки этих вызовов на стороне клиента. Firebug предоставит вам всю необходимую информацию, чтобы определить, что на самом деле происходит.
getfirebug.com
вам нужно настроить Test() на принятие/разрешение POST