Состояние состязания является ситуацией на параллельном программировании, где два параллельных потока или процессы конкурируют за ресурс, и получающееся конечное состояние зависит от того, кто получает ресурс сначала.
Вот минималистичный пример, который, надеюсь, поможет вам начать:
<%@ 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>
Я немного изменил ваш код. Я добавил серверный вывод 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;
});
}
Дайте мне знать, если это сработает!