2017-01-26 67 views
1

我不知道为什么我的代码不起作用。我只是试图对我的一个控制器进行简单的调用,并得到一个json结果作为回报。Ajax在MVC视图中不起作用

在我看来,这个脚本看起来如下:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script type="text/javascript"> 
     $(document).ready(function() { 
      var serviceURL = '/WorkRolesController/checkNumRoles'; 

      $.ajax({ 
       type: "POST", 
       url: '@Url.Action("checkNumRoles", "WorkRolesController")', 
       dataType: "json", 
       success: successFunc, 
       error: errorFunc 
      }); 

      function successFunc(data, status) { 
       alert(data); 
      } 

      function errorFunc() { 
       alert('error'); 
      } 
     }); 
</script> 

这里是在控制器(简化)操作方法的样子:

[HttpPost] 
    public ActionResult checkNumRoles() 
    { 

     return Json("skat", JsonRequestBehavior.AllowGet); 
    } 

我目前正在与字符串得到一个警报'错误',每次我加载页面。

我错过了什么?

+0

尝试'网址:“/ WorkRoles/checkNumRoles'' –

回答

2

Url.Action中提供控制器名称时,不需要包含Controller后缀。试试这个:

url: '@Url.Action("checkNumRoles", "WorkRoles")', 

还要注意JsonRequestBehavior.AllowGet是多余的,因为它是一个POST请求只有这里有一个完整的例子:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $.ajax({ 
      type: "POST", 
      url: '@Url.Action("checkNumRoles", "WorkRoles")', 
      dataType: "json", 
      success: function(data, status) { 
       alert(data); 
      }, 
      error: function() { 
       alert('error'); 
      } 
     }); 
    }); 
</script> 
[HttpPost] 
public ActionResult checkNumRoles() 
{ 
    return Json("skat"); 
} 
+0

谢谢!这是问题...哦,上帝......:D –

+0

没问题,很高兴帮助:) –

相关问题