我試圖從javascript調用控制器方法,我似乎無法正確執行此操作。我對JavaScript的使用經驗很少,並且遵循了其他關於如何從stackoverflow執行此操作的示例,但我仍然遇到了一些問題 - 如果任何人都可以提供幫助,那就太棒了。ASP.NET MVC 5從Javascript調用控制器方法錯誤
基本上我試圖做的是在JavaScript對象上設置一個.data標籤,以便由控制器上的方法返回的字符串(此方法調用運行SQL Server函數的webservice)。該方法需要傳遞函數中使用的一個參數。
的代碼如下:
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設置爲空值THEN我得到一個錯誤確曾發生,就像我說的,我提醒相當缺乏JavaScript經驗,所以我誠實地不確定它是否以正確的順序調用方法,如果我在從jQuery收到錯誤消息之前在this.node.fill上發生錯誤。
任何/所有幫助或建議非常感謝!
基本異步編碼錯誤:你不能從一個回調函數中返回一個值(如'成功:')如出現這種情況長你的功能退出後。 @Igor下面有一些正確的建議。 –