Использование метода jQuery getJSON с веб-формой ASP.NET
Как мне обратиться к методу на странице веб-формы ASP.NET с использованием метода getJSON в jQuery?
Цель состоит в следующем:
- Пользователь нажимает на элемент списка
- Значение отправляется на сервер
- Сервер отвечает связанным списком вещей, отформатированным с помощью JSON
- Вторичный блок заполнения
Я не хочу использовать UpdatePanel, я делал это сотни раз, используя ASP.NET MVC Framework, но не могу понять это с помощью веб-форм!
Пока я могу делать все, включая вызов сервера, он просто не вызывает правильный метод.
Спасибо,
Кирон
Некоторые коды:
jQuery(document).ready(function() {
jQuery("#<%= AreaListBox.ClientID %>").click(function() {
updateRegions(jQuery(this).val());
});
});
function updateRegions(areaId) {
jQuery.getJSON('/Locations.aspx/GetRegions',
{ areaId: areaId },
function (data, textStatus) {
debugger;
});
}
Ответы
Ответ 1
Вот минималистский пример, который, надеюсь, начнется с вас:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Services" %>
<script runat="server">
[WebMethod]
public static string GetRegions(int areaId)
{
return "Foo " + areaId;
}
</script>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>jQuery and page methods</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(function() {
var areaId = 42;
$.ajax({
type: "POST",
url: "Default.aspx/GetRegions",
data: "{areaId:" + areaId + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
alert(data.d);
}
});
});
</script>
</body>
</html>
Ответ 2
Я немного изменил ваш код. Я добавил выходной сервер ClientID к методу updateRegions, чтобы передать его. И я изменил метод getJSON для передачи в url с параметром строки запроса (вместо отдельных данных) и функцией обратного вызова.
jQuery(document).ready(function() {
jQuery("#<%= AreaListBox.ClientID %>").click(function() {
updateRegions(<%= AreaListBox.ClientID %>);
});
});
function updateRegions(areaId) {
jQuery("h2").html("AreaId:" + areaId);
jQuery.getJSON("/Locations.aspx/GetRegions?" + areaId,
function (data, textStatus) {
debugger;
});
}
Сообщите мне, если это работает!
Ответ 3
Вы также можете использовать GetJSON, но в этом случае вы должны изменить WebMethod. Вы должны украсить его:
[WebMethod(EnableSession = true)]
[ScriptMethod(UseHttpGet =false, ResponseFormat = ResponseFormat.Json)]
Выполнение get может быть не таким, каким вы хотите.