我创建了一个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
并且也在同一个项目中工作。
请给你建议。
答案 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;
}
现在它的工作正常。感谢..