Я новичок в jquery и json и пытаюсь выяснить, почему функция getAreas () возвращает 500 / Internal Server Error - undefined.Я проверил WebMethod и он возвращает данные, и функция getRegions () работает просто отлично.Проект VS строится просто отлично.Есть идеи?Код ниже:
C # Серверная сторона
[WebMethod]
public static ArrayList GetRegionsArrayList()
{
ArrayList arrayList = new ArrayList();
foreach (DataRow dr in Utility.Regions().Rows)
{
arrayList.Add(new ListItem(dr["Region"].ToString(), dr["Dot4"].ToString()));
}
return arrayList;
}
[WebMethod]
public static ArrayList GetAreasArrayList(string Dot4)
{
ArrayList arrayList = new ArrayList();
foreach (DataRow dr in Utility.Areas(Dot4).Rows)
{
arrayList.Add(new ListItem(dr["Area"].ToString(), dr["Dot6"].ToString()));
}
return arrayList;
}
JavaScript
<script type="text/javascript" language="javascript">
function PopulateControl(list, control) {
if (list.length > 0) {
control.removeAttr("disabled");
control.empty().append('<option selected="selected" value="0">Please select</option>');
$.each(list, function () {
control.append($("<option></option>").val(this['Value']).html(this['Text']));
});
} else {
control.empty().append('<option selected="selected" value="0">Not available<option>');
}
}
function getRegions() {
$.ajax({
type: "POST",
url: "Demo.aspx/GetRegionsArrayList",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnRegionsPopulated,
error: function (response) {
alert(response.status + ' ' + response.statusText);
},
failure: function (response) {
alert(response.d);
}
});
}
function getAreas() {
$.ajax({
type: "POST",
url: "Demo.aspx/GetAreasArrayList",
data: "{Dot4: ' + $('#<%=DDL_Region.ClientID%>').val() + '}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnAreasPopulated,
error: function (response) {
alert(response.status + ' ' + response.statusText);
},
failure: function (response) {
alert(response.d);
}
});
}
function OnRegionsPopulated(response) {
PopulateControl(response.d, $("#<%=DDL_Region.ClientID%>"));
}
function OnAreasPopulated(response) {
PopulateControl(response.d, $("#<%=DDL_Area.ClientID%>"));
}
</script>
Управление
<select id="Select1" onchange="getRegions();">
<select id="DDL_Region" onchange="getAreas();" runat="server"></select>
<select id="DDL_Area" runat="server"></select>
Сведения об ошибке:
{"Сообщение": "Недопустимый примитив JSON: Dot4.", "StackTrace": "в System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject () \ r \ n в System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal (глубина Int32) \ r \ n в System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize (строковый ввод, Int32 deepLimit, сериализатор JavaScriptSerializer) \ r \ n в System.Web.Script.Serializer.JavaДесериализация (сериализатор JavaScriptSerializer, ввод String, тип Type, Int32 deepLimit) \ r \ n в System.Web.Script.Serialization.JavaScriptSerializer.Deserialize [T] (ввод строки) \ r \ n в System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest (контекст HttpContext, сериализатор JavaScriptSerializer) \ r \ n в System.Web.Script.Services.RestHandler.GetRawParams (WebServiceMethodData methodData, контекст HttpContext) \ r \ n в System.Web.Script.Services.RestHandler.ExecuteWebServiceCall (контекст HttpContext, WebServiceMethodData methodData) "," ExceptionType ":" System.ArgumentException "}