gpt4 book ai didi

javascript - AJAX 未显示验证错误

转载 作者:行者123 更新时间:2023-12-03 12:08:02 25 4
gpt4 key购买 nike

我已经被这个问题困扰了两天了,我不知道问题出在哪里。

当我离开文本框时,Ajax 调用是正确的,结果返回 true 或 false,并且 success: 函数正在执行。

问题是图像和错误文本未显示在文本框旁边。如果我在文本框中输入超过 50 个字符,则会显示“必须少于 50 个字符”消息,但如果我输入已存在的用户名,则不会显示该消息。

我错过了什么?有什么建议吗?

我使用 DevExpress 文本框

Html.DevExpress().Label(
edtSettings =>
{
edtSettings.ControlStyle.CssClass = "label";
edtSettings.Text = "User Name:";
edtSettings.AssociatedControlName = "UserName";
}
)
.Render();
Html.DevExpress().TextBox(
edtSettings =>
{
edtSettings.Name = "UserName";
edtSettings.ControlStyle.CssClass = "editor";
edtSettings.ShowModelErrors = true;
edtSettings.Width = 100;
edtSettings.Properties.ValidationSettings.Assign(IserValidationHelper.UserNameValidationSettings);
edtSettings.Properties.ClientSideEvents.Validation = "OnNameValidation";
edtSettings.ControlStyle.BackColor = System.Drawing.Color.LightYellow;
}
)
.Bind(DataBinder.Eval(IserUser, "UserName"))
.Render();

我有以下 JavaScript。

<script type="text/javascript">

function OnNameValidation(s, e) {

if (e.value == null)
e.isValid = false;

$.ajax({
type: 'POST',
url: '/Admin/CheckUsername',
dataType: 'json',
data: { userName: e.value },
error: function () { alert("error"); },
success: function (Data) {
if (Data.result == true) {
e.isValid = false;
e.errorText = "User Exits";
};
}
});

var name = e.value;
if (name == "")
e.isValid = false;

if (name.length > 50) {
e.isValid = false;
e.errorText = "Must be under 50 characters";
}

}

我的 Controller 中有以下方法。

[HttpPost]
public ActionResult CheckUsername(string userName)
{
bool status = WebSecurity.UserExists(userName);
return Json(new { result = status });
}

JSON Result

JSON Result 2

最佳答案

问题出在我的 $.ajax 调用上。我必须包含设置 async (async:false,),因为默认 async 为 true。现在可以正常工作了。

function OnNameValidation(s, e) {

if (e.value == null)
e.isValid = false;

$.ajax({
type: 'POST',
url: '/ISERAdmin/CheckUsername',
dataType: 'json',
async:false,
data: { userName: e.value },
error: function () { alert("error"); },
success: function (Data) {
if (Data.result == true) {
e.isValid = false;
e.errorText = "User Exits";
};
}
});

var name = e.value;
if (name == "")
e.isValid = false;

if (name.length > 56) {
e.isValid = false;
e.errorText = "Must be under 56 characters";
}

}

关于javascript - AJAX 未显示验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25095825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com