我编写了调用 MVC 服务器端方法的 Jquery Ajax 函数,但我的问题是它返回 html 而不是 Json 字符串,并且当它尝试解析返回的 html 时会抛出错误。
相同的代码在其他应用程序服务上运行良好(返回 Json 字符串)。 此应用程序服务可能存在什么问题? 我需要更改应用服务上的设置吗?
这是我的源代码:
MVC
[HttpPost]
[NoDirectAccess]
[ValidateAntiForgeryToken]
[Route("Login")]
public IActionResult Login(string email, string password)
{
//run business logic
//return results
return Json(new { isValid = false, message = "", exception = "", html = "" });
}
Javascript
$.ajax({
url: '@Url.Action("Login","MyController")',
type: 'POST',
data: postData,
contentType: 'application/x-www-form-urlencoded',
dataType: "html",
success: function (res) {
console.log(JSON.parse(res)); //it throws an error here
}
});
错误
VM466:6 Uncaught SyntaxError: Unexpected token '<', "
<!DOCTYPE "... is not valid JSON
我通过将数据类型更改为 'text' 并在服务器端返回 http 状态代码来解决此问题:
返回 Ok(Json(new { isValid = false, message = "", 异常 = "", html = "" }));