使用脚本中的ajax从另一个项目调用Webapi路由属性

时间:2017-05-30 15:22:22

标签: jquery ajax asp.net-mvc asp.net-web-api

我创建了一个mvc应用程序。它包含脚本文件,如下所示,

 $.ajax({
        type: "POST",
        url: "http://localhost:55016/api/ajaxapi/caselistmethod",
        data: "",
        contentType: "application/json; charset=utf-8",
        async: false,
        success: function (response) {
            alert("hi");
       }

我创建了一个带有route属性的webapi项目,如下所示

public class CaseController : ApiController
    {
        [AcceptVerbs("GET", "POST")]
        [HttpPost]
        [Route("api/ajaxapi/caselistmethod")]
        public List<CaseValues> AjaxCaseListMethod()
        {
            CaseModel users = new CaseModel();
            string userName = HttpContext.Current.User.Identity.Name;
            List<CaseValues> caseList = new List<CaseValues>();
            caseList = users.GetCaseDetails(userName);
            // caseList = caseList.Take(10).ToList();
            return caseList;
        }
}

但是我的ajax电话没有点击上面的webapi动作。它在粘贴位置时直接在浏览器中工作,如下所示,

http://localhost:55016/api/ajaxapi/caselistmethod

并且也在同一个项目中工作。

请给你建议。

1 个答案:

答案 0 :(得分:1)

最后,根据Asif Raza说,我解决了我的问题。是的我使用CORS如下,

我从mvc项目调用ajax,如下所示,

 $.ajax({
            type: "POST",
            url: "http://localhost:55016/api/ajaxapi/caselistmethod",
            data: "",
            success: function (response) {
               alert("hi");
            }
});

然后我们必须在web api项目中的web.config文件中添加以下代码,如下所示,

<httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept,Authorization" />
      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
    </customHeaders>
  </httpProtocol>

然后我们必须写下如下行动,

[HttpPost]
[Route("api/ajaxapi/caselistmethod")]
public List<CaseValues> AjaxCaseListMethod()
{
            CaseModel users = new CaseModel();
            string userName = HttpContext.Current.User.Identity.Name;
            List<CaseValues> caseList = new List<CaseValues>();
            caseList = users.GetCaseDetails(userName);
            return caseList;
}

现在它的工作正常。感谢..