加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC 5从Javascript Error调用控制器方法

发布时间:2020-12-16 07:13:05 所属栏目:asp.Net 来源:网络整理
导读:我试图从 javascript调用控制器方法,我似乎无法正确执行此操作.我对javascript的经验很少,并且已经跟踪了如何从stackoverflow执行此操作的其他示例,但我仍然遇到一些问题 – 如果有人可以提供帮助那就太棒了. 基本上我要做的是将javascript对象上的.data标记
我试图从 javascript调用控制器方法,我似乎无法正确执行此操作.我对javascript的经验很少,并且已经跟踪了如何从stackoverflow执行此操作的其他示例,但我仍然遇到一些问题 – 如果有人可以提供帮助那就太棒了.

基本上我要做的是将javascript对象上的.data标记设置为控制器上的方法返回的字符串(此方法调用运行SQL Server函数的Web服务).该方法需要传递一个在函数中使用的参数.

代码如下:

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设置为空值然后我收到发生错误的警报 – 就像我说我对javascript缺乏经验所以我老实说,如果我在收到来自JQuery的错误消息之前在this.node.fill上收到错误,它是否正在以正确的顺序调用方法.

非常感谢任何/所有帮助或建议!

解决方法

>如果您的控制器类是NodeController,则在Url.Action中仅使用“Node”作为控制器名称:

url: '@Url.Action("CallService","Node")',

>您无法从异步函数同步返回值.将回调传递给CallService以在成功时调用或使用jquery promise – http://api.jquery.com/promise/>我们不知道this.node.fill是什么或它定义的位置.可能的是,在执行赋值时没有定义this.node.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读