ASP.NET MVC 5 从 Javascript 错误调用控制器方法
ASP.NET MVC 5 calling controller method from Javascript Error
我正在尝试从 javascript 调用控制器方法,但我似乎无法正确执行它。我对 javascript 的经验很少,并且遵循了其他如何从 Whosebug 执行此操作的示例,但我仍然遇到一些问题 - 如果有人可以提供帮助,那就太棒了。
基本上我想做的是将 javascript 对象上的 .data 标记设置为控制器上的方法返回的字符串(此方法调用运行 SQL 的网络服务服务器功能)。该方法需要传递一个在函数中使用的参数。
代码如下:
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: call of ajax.
中所指的
基本上发生的事情是当我运行该页面时,我首先收到一条错误消息说它无法将 this.node.fill 设置为空值 THEN 我收到警告发生了一个错误——就像我说的,我对 javascript 非常缺乏经验,所以老实说,如果我在收到错误之前在 this.node.fill 上遇到错误,我什至不确定它是否以正确的顺序调用该方法来自 JQuery.
的消息
Any/all 非常感谢帮助或建议!!!
如果您的控制器 class 是 NodeController
,请仅使用 "Node" 作为 Url.Action
:
中的控制器名称
url: '@Url.Action("CallService", "Node")',
您不能同步 return 来自异步函数的值。将回调传递给 CallService
以在成功时调用或使用 jquery promise - http://api.jquery.com/promise/
我们不知道 this.node.fill
是什么,也不知道它是在哪里定义的。可能 this.node
在执行赋值时未定义。
你不需要用控制器的名字来写控制器
@Url.Action("CallService", "Node")
我正在尝试从 javascript 调用控制器方法,但我似乎无法正确执行它。我对 javascript 的经验很少,并且遵循了其他如何从 Whosebug 执行此操作的示例,但我仍然遇到一些问题 - 如果有人可以提供帮助,那就太棒了。
基本上我想做的是将 javascript 对象上的 .data 标记设置为控制器上的方法返回的字符串(此方法调用运行 SQL 的网络服务服务器功能)。该方法需要传递一个在函数中使用的参数。
代码如下:
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: call of ajax.
中所指的基本上发生的事情是当我运行该页面时,我首先收到一条错误消息说它无法将 this.node.fill 设置为空值 THEN 我收到警告发生了一个错误——就像我说的,我对 javascript 非常缺乏经验,所以老实说,如果我在收到错误之前在 this.node.fill 上遇到错误,我什至不确定它是否以正确的顺序调用该方法来自 JQuery.
的消息Any/all 非常感谢帮助或建议!!!
如果您的控制器 class 是
中的控制器名称NodeController
,请仅使用 "Node" 作为Url.Action
:url: '@Url.Action("CallService", "Node")',
您不能同步 return 来自异步函数的值。将回调传递给
CallService
以在成功时调用或使用 jquery promise - http://api.jquery.com/promise/我们不知道
this.node.fill
是什么,也不知道它是在哪里定义的。可能this.node
在执行赋值时未定义。
你不需要用控制器的名字来写控制器
@Url.Action("CallService", "Node")