Jquery JsonResult returning";“未定义”;

Jquery JsonResult returning";“未定义”;,jquery,asp.net-mvc,validation,jsonresult,Jquery,Asp.net Mvc,Validation,Jsonresult,您好,在MVC应用程序中,我在AccountController.cs中具有以下功能: public JsonResult IsAvailableUN(string Username) { return Json(!Conn.Accounts.Any(Accounts => Accounts.Username == Username), JsonRequestBehavior.AllowGet); } 其中,Conn是我的连接,Accounts是表格和模型的名称,Username

您好,在MVC应用程序中,我在
AccountController.cs
中具有以下功能:

public JsonResult IsAvailableUN(string Username)
{
    return Json(!Conn.Accounts.Any(Accounts => Accounts.Username == Username), JsonRequestBehavior.AllowGet);
}
其中,
Conn
是我的连接,
Accounts
是表格和模型的名称,
Username
是文本框和表格列名中的字符串

账户
模型中,我在公共字符串
用户名
上方有以下配置:

[Remote("IsAvailableUN", "Account", ErrorMessage = "This username is already taken!")]
在我看来,我已经包含了必需的
jquery.validate.min.js
jquery.validate.unobtrusive.min.js

这将触发我的
用户名
文本框,通过键入现有用户名并点击
选项卡
后缀来给出错误,但是,浏览器控制台返回:

Uncaught SyntaxError: Unexpected token u in JSON at position 0
at Function.parse [as parseJSON] (<anonymous>)
at HTMLFormElement.l (jquery.validate.unobtrusive.min.js:5)
at Object.e [as errorPlacement] (jquery-3.1.1.min.js:2)
at c.validator.showLabel (jquery.validate.min.js:36)
at c.validator.defaultShowErrors (jquery.validate.min.js:34)
at c.validator.showErrors (jquery.validate.min.js:28)
at Object.success (jquery.validate.min.js:46)
at i (jquery-3.1.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.1.1.min.js:2)
at A (jquery-3.1.1.min.js:4)
Uncaught SyntaxError:JSON中位于位置0的意外标记u
在Function.parse[as parseJSON]()
在HTMLFormElement.l(jquery.validate.unobtrusive.min.js:5)
在Object.e[as errorPlacement](jquery-3.1.1.min.js:2)
位于c.validator.showLabel(jquery.validate.min.js:36)
在c.validator.defaultShowErrors(jquery.validate.min.js:34)
在c.validator.rors(jquery.validate.min.js:28)
在Object.success(jquery.validate.min.js:46)
at i(jquery-3.1.1.min.js:2)
在Object.fireWith[as resolveWith](jquery-3.1.1.min.js:2)
在A(jquery-3.1.1.min.js:4)
我返回的json只包含一个单词:
undefined


我在这里遗漏了什么吗?

您的方法应该具有与具有远程验证的属性相同的参数

检查您的财产名称。它应该是

[Remote("IsAvailableUN", "Account", ErrorMessage = "This username is already taken!")]
public string Username{get;set;} //Same as function parameter
 { "propertyName" : true } 
和返回值应为匿名类型。不是纯true/false

var anonymous =new {
  result=true;
};

return Json(anonymous , JsonRequestBehavior.AllowGet);

您的方法应该具有与具有远程验证的属性相同的参数

检查您的财产名称。它应该是

[Remote("IsAvailableUN", "Account", ErrorMessage = "This username is already taken!")]
public string Username{get;set;} //Same as function parameter
 { "propertyName" : true } 
和返回值应为匿名类型。不是纯true/false

var anonymous =new {
  result=true;
};

return Json(anonymous , JsonRequestBehavior.AllowGet);
!!任何(Accounts=>Accounts.Username==Username)将返回布尔值(而不是对象)

它应该是json对象{“propertyName”:“value”}。你的情况应该是这样的

[Remote("IsAvailableUN", "Account", ErrorMessage = "This username is already taken!")]
public string Username{get;set;} //Same as function parameter
 { "propertyName" : true } 

你可以用

 var isValid = !Conn.Accounts.Any(Accounts => Accounts.Username == Username);
 return Json(new { Valid = isValid }, JsonRequestBehavior.AllowGet);
!!任何(Accounts=>Accounts.Username==Username)将返回布尔值(而不是对象)

它应该是json对象{“propertyName”:“value”}。你的情况应该是这样的

[Remote("IsAvailableUN", "Account", ErrorMessage = "This username is already taken!")]
public string Username{get;set;} //Same as function parameter
 { "propertyName" : true } 

你可以用

 var isValid = !Conn.Accounts.Any(Accounts => Accounts.Username == Username);
 return Json(new { Valid = isValid }, JsonRequestBehavior.AllowGet);
尝试这样做。这应该是可行的。您应该以JSON对象而不是布尔变量的形式返回数据


像这样试试。这应该是可行的。你应该以JSON对象而不是布尔变量的形式返回数据

你能发布你收到的JSON吗?因为如果浏览器没有撒谎或者没有收到json回复&我收到的只是单词
未定义
你能试试
公共JsonResult IsAvailableUN(字符串用户名){返回新的JsonResult{Data=!Conn.Accounts.Any(Accounts=>Accounts.Username==Username),JsonRequestBehavior=JsonRequestBehavior.AllowGet}
你能发布你收到的json吗?因为如果浏览器没有撒谎或者没有收到json回复&我收到的只是单词
未定义
你能试试
公共JsonResult IsAvailableUN(字符串用户名){返回新的JsonResult{Data=!Conn.Accounts.Any(Accounts=>Accounts.Username==Username),JsonRequestBehavior=JsonRequestBehavior.AllowGet}
您好,谢谢您的回复。我的方法与我的验证名称完全相同。您好,谢谢您的回复。我的方法与我的验证名称完全相同。您好,谢谢您回复我的帖子。不幸的是,这个解决方案也不起作用(相同的结果)您好,谢谢您回复我的帖子。不幸的是,这个解决方案也不起作用(相同的结果)