大伙发现了什么没?跟以往mvc大多数相同,但有些地方不同 ,我们来一起看看有何区别
1.首先SysUsersController上面有一段代码
[Produces("application/json")] //[Route("api/SysUsers")] [Route("api/[controller]/[action]")] public class SysUsersController : Controller { }
注释的部分先不管,首先我们接收的json格式内容,然后路由是 api/[controller]/[action]
这种情况我们只需要正常的ajax请求就能访问到了,
$.ajax({
url:'/api/SysUsers/Login',
type: 'POST',
contentType: "application/json; charset=utf-8",
data: {UserName:'shumin',Password:'123456'},
success: function (data) {
if (data.success) {
var href = '@Url.Action("Index")?' + new Date().getTime();
window.location.href = href;
} else {
alert(data.message);
}
},
error: function () {
alert('服务端错误');
}
});
我们运行一下, 发现拿不到数据,
这是为什么呢,经过多番尝试,是前台http请求不对,因为我们约定的json传输,所以数据需要序列化
$.ajax({
url:'/api/SysUsers/Login',
type: 'POST',
contentType: "application/json; charset=utf-8",
data: JSON.stringify({UserName:'shumin',Password:'123456'}),
success: function (data) {
if (data.success) {
var href = '@Url.Action("Index")?' + new Date().getTime();
window.location.href = href;
} else {
alert(data.message);
}
},
error: function () {
alert('服务端错误');
}
});
还有一点需要注意的事,ajax默认的
contentType是application/x-www-form-urlencoded
我们需要改成application/json; charset=utf-8
这样就可以拿到数据了