我正在尝试检查数据库中是否存在电子邮件地址。我有一个外部JavaScript文件,我用来调用我的jQuery(以保持我的视图干净)。也许是因为我在启用SSL的情况下运行? (我使用的是https)
外部js文件中的函数:
function checkemail() {
var email = $("#email").val();
$.ajax({
url: "/Account/CheckEmailExists/",
data: JSON.stringify({ p: email }),
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
alert(data)
}
});
}
控制器中的操作:
public ActionResult CheckEmailExists(string p)
{
bool bEmailExists = false;
using (RBotEntities EF = new RBotEntities())
{
var query = (from U in EF.AspNetUsers
where U.Email == p
select U).FirstOrDefault();
if(query.Email != null)
{
bEmailExists = true;
}
else
{
bEmailExists = false;
}
}
return Json(bEmailExists, JsonRequestBehavior.AllowGet);
}
我似乎收到一条错误说明以下内容:
XML解析错误:找不到根元素位置: https://localhost:44347/Account/CheckEmailExists/第1行, 第1栏:
我的理解是ActionResult
不存在。但确实如此?
我做错了什么,或者有没有理由不能通过外部JavaScript文件调用ActionResult
?
答案 0 :(得分:1)
试试这个
在控制器
中[httppost]
public ActionResult CheckEma.........
在JS中
function checkemail() {
var email = $("#email").val();
$.ajax({
url: "/Account/CheckEmailExists/",
data: { p: email },
type: "POST",
success: function (data) {
alert(data)
}
});
}
答案 1 :(得分:1)
此处不需要Json.Stringify
和ContentType
function checkemail() {
var email = $("#email").val();
$.ajax({
url: "/Account/CheckEmailExists",
data: { p: email },
type: "POST",
success: function (data) {
alert(data)
}
});
}
答案 2 :(得分:0)
所以我发现了造成这个问题的原因......
在我的行动结果之上,我需要添加[AllowAnonymous]
数据注释,然后它到达我的ActionResult
!我宁愿不允许匿名,但它有效,我想分享这个,以防它帮助其他人。以下是我的代码:
的ActionResult:
[AllowAnonymous]
public ActionResult CheckEmailExists(string p)
{
bool bEmailExists = false;
using (RBotEntities EF = new RBotEntities())
{
var query = (from U in EF.AspNetUsers
where U.Email == p
select U).FirstOrDefault();
if (query.Email != null)
{
bEmailExists = true;
}
else
{
bEmailExists = false;
}
}
return Json(bEmailExists, JsonRequestBehavior.AllowGet);
}
JavaScript文件中的JavaScript函数:
function checkemail() {
var email = $("#email").val();
var bReturnedValue = false;
$.ajax({
url: "/Account/CheckEmailExists/",
data: { p: email },
async: false,
success: function (data) {
if(data)
{
bReturnedValue = true;
}
else
{
bReturnedValue = false;
}
}
});
return bReturnedValue;
}
这就是我发起它的方式(我正在做一个popover来指定电子邮件存在):
$("#createacc_next").click(function () {
var bEmailExists = false;
bEmailExists = checkemail();
if (bEmailExists) {
$("#email").attr("disabled", false).css("border-color", "red");
$('#email').popover({ title: 'Attention', content: 'Email address already exists', placement: 'top', trigger: 'focus' });
Email_Validation_Passed = false;
}
})