Я думаю, что вашей проблемой могут быть круглые скобки вокруг данных. Это действительно должен быть просто объект, который используется для аргументов. Если я прав, то внутренняя ошибка сервера в том, что обработчик маршрута не может найти подходящую подпись для getRowName
.
Чтобы это работало, вам также нужно вернуть JsonResult из вашего метода, а не строку. Это также может быть проблемой, так как он может искать только методы, которые возвращают ActionResult.
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult getRowName(string currRow, int offset)
{
string rowName;
rowName = _rowRepository.getRowNameByOffset(currRow, offset);
return Json( new { RowName = rowName } );
}
Кроме того, вызов Ajax не приведет к созданию объекта. Вам нужно, чтобы ваш обработчик успеха делал то, что вы пытаетесь сделать с ответом.
$.ajax({
type: "POST",
url: "/Row/getRowName",
dataType: "json",
data: { currRow : rowName, offset : 5 },
error:function(request){alert(request.statusText)},
success:function(result){
$('#rowNameContainer').html( result.RowName );
}
});
Если вам действительно нужен результат в переменной (маловероятно, но возможно), тогда вы можете выполнить синхронный вызов ajax (async: false
) и установить переменную в функции успеха.
$(...).click( function() {
var response = null;
$.ajax({
type: "POST",
async: false,
url: "/Row/getRowName",
dataType: "json",
data: { currRow : rowName, offset : 5 },
error:function(request){alert(request.statusText)},
success:function(result){
response = result.RowName;
}
});
... do something with response...
return false;
});