Я пытаюсь вызвать метод контроллера из javascript, и у меня, похоже, возникают проблемы с его правильной работой. У меня очень мало опыта работы с javascript, и я следил за другими примерами того, как это сделать из stackoverflow, но у меня все еще есть некоторые проблемы - если кто-то может помочь, это будет фантастично.ASP.NET MVC 5 вызов метода контроллера из Javascript Error
В основном то, что я пытаюсь сделать, это установить тег .data на объект javascript в строку, возвращаемую методом на контроллере (этот метод вызывает веб-сервис, который выполняет функцию SQL Server). Метод должен быть передан один параметр, который используется в функции.
код ниже:
Javascript Код
for (var i = 0; i < stats.length; i++)
{
var stat = stats[i].data('id');
var color = CallService(stat);
this.node.fill = color;
}
JQuery Метод
function CallService(id) {
$.ajax({
url: '@Url.Action("CallService", "NodeController")',
type: 'GET',
dataType: 'json',
cache: false,
data: { 'id': id },
success: function (color) {
return color;
},
error: function() {
alert('Error occured');
}
});
}
Контроллер Метод
[HttpGet]
public JsonResult CallService(string id)
{
var idNum = Convert.ToInt32(id);
var StationService = new getStationStatus.Service1SoapClient("Service1Soap");
string color = StationService.getStationStatus(idNum);
return Json(color, JsonRequestBehavior.AllowGet);
}
контроллер называется NodeController - это то, о чем я говорю в url: вызов ajax.
В основном то, что происходит, когда я запустить страницу, я сначала получаю сообщение об ошибке сказав, что не может установить this.node.fill к нулевому значению ТОГДА я получаю предупреждение о том, что ошибка occurred-, как я сказал, что я довольно неопытный с javascript, поэтому я честно даже не уверен, что он вызывает метод в правильном порядке, если я получаю сообщение об ошибке this.node.fill, прежде чем я получу сообщение об ошибке из JQuery.
Любая помощь или предложения приветствуются !!!
Основные асинхронной ошибки кодирования: Вы не можете вернуть значение из середины функции обратного вызова (например, 'успеха:'), как это происходит долго после выхода вашей функции. @Igor имеет некоторые правильные предложения ниже. –