[英]MVC 4 Razor Jquery Ajax returns JSON.parse() syntax error
我有一个MVC 4应用程序登录页面,在该页面中,我试图对我的登录控制器使用jquery ajax请求,以查看该用户是否存在。 我的jQuery:
$(document).ready(function () {
$("#btnSubmit").click(function () {
var actionUrl = '@Url.Action("Index", "Auth")';
var username = $("#UserName").val();
var password = $("#Password").val();
var jsonString = '[{"username": "' + username + '", "password": "' + password + '"}]';
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8;',
dataType: 'json',
url: actionUrl,
data: jsonString,
success: function (data) {
alert(data);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.status + " - " + thrownError);
alert(ajaxOptions);
}
});
return false;
});
我的身份验证操作中的索引控制器:
// POST: /login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public JsonResult Index(LoginModel model, string returnUrl)
{
return this.Json(String.Empty);
}
我的路线配置:
routes.MapRoute(
name: "AuthRoot",
url: "login",
defaults: new { controller = "Auth", action = "Index", returnUrl = UrlParameter.Optional }
);
routes.MapRoute(
name: "AuthRoot2",
url: "login/{username}/{password}",
defaults: new { controller = "Auth", action = "Index", returnUrl = UrlParameter.Optional, username = UrlParameter.Optional, password = UrlParameter.Optional }
);
我不确定这里发生了什么,因为每次生成ajax请求时,on错误位都会运行。 这是firebug的响应标头:
Response Headers
Cache-Control private
Connection Close
Content-Length 3835
Content-Type text/html; charset=utf-8
Date Tue, 11 Feb 2014 01:51:34 GMT
Server ASP.NET Development Server/11.0.0.0
X-AspNet-Version 4.0.30319
X-AspNetMvc-Version 4.0
Request Headers
Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Content-Type application/json; charset=utf-8;
Cookie __RequestVerificationToken=GqfLsAL26Vo4UM6PiXwON-zGO8M4Y9v1WBA4XQ8tuxDtvPiW7aQy5JKIP85ULQawEoPeB2F0XDSsxd0jsl8braOxMEAkXR1V1LAgdmxBe5iQDy_1qOfX-fjPpebgHgM2Qyq8kv1pa-y4cjfmYhSthw2
Host localhost:50925
Referer http://localhost:50925/login
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0
X-Requested-With XMLHttpRequest
这是我发布的内容:
JSON
0
Object { username="manager", password="P@ssw0rd"}
password
"P@ssw0rd"
username
"manager"
Source
[{"username": "manager", "password": "P@ssw0rd"}]
当我在控制器上放置一个断点并进行调试时,它永远不会触发,而是收到json.parse语法错误。 我似乎不知道为什么。 我在此网站和其他网站上尝试了许多其他解决方案,但它们似乎对我没有帮助。 我肯定错过了什么。
您应该更改Action方法:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public JsonResult Index(LoginModel model)
{
return this.Json(String.Empty);
}
or if above not work then use following:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public JsonResult Index(string username,string password)
{
return this.Json(String.Empty);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.