Причина, по которой ваш код не работает, заключается в том, что по умолчанию ASP.NET MVC 2 не понимает JSON
запросов. Нет ничего встроенного, что позволяет отправлять запрос в формате JSON и что этот запрос анализируется обратно в строго типизированный аргумент действия. Эта функция встроена по умолчанию, начиная с ASP.NET MVC 3. Взгляните на следующую запись в блоге . Вам нужно будет реализовать JsonValueProviderFactory
, если вы хотите, чтобы эта работа выполнялась в ASP.NET MVC 2.
Также вместо:
data: "{'srchText' : '" + srchText + "'}",
вы должны использовать:
data: JSON.stringify({ srchText: srchText }),
JSON.stringify
является родным для современных браузеров, а для более старых вам может потребоваться включить json2.js
.
Другая возможность, если вы не хотите реализовывать JsonValueProviderFactory
, - это использовать стандартный запрос application/x-www-form-urlencoded
, который может понять механизм связывания модели по умолчанию:
$.ajax({
url: '/Ajax/GetCities',
data: { srchText: srchText },
type: 'POST',
async: false,
dataType: 'json',
dataFilter: function (data) { return data; },
success: function (data) {
cityList = data.d;
}
});