gpt4 book ai didi

jquery - Asp.Net MVC 中的 Ajax 返回问题

转载 作者:行者123 更新时间:2023-12-01 04:06:39 24 4
gpt4 key购买 nike

我正在使用 asp.net mvc 4 开发一个网站,

我有一个方法可以检查用户是否注册。我使用ajax,如果用户已经注册,我想在注册网页的div上写一条消息,如果没有,我想注册用户并返回主页。我希望它清楚。因为看起来有点难以理解。

script type="text/javascript">
$(function() {
$('#form0').submit(function(event) {

event.preventDefault();
var result = "";
var form = $(this);


$.ajax({
url: "CheckUser", //form.attr("action"),
data: form.serialize(),
beforeSend: function() {
$("#ajax-loader").show();
},
complete: function() {
$("#ajax-loader").hide();
},
error: function(request, status, error) {
var obj = jQuery.parseJSON(request.responseText);
if (request.status == 403) // authorize error
{
myRouting(obj.LogOnUrl, "403 error", "error");

} else {

alert("Error Occured: " + error.responseText + "\nError Code: " +
request.responseText + " -- " + request.responseText);
var msg = "Error: " + error + "\nErrorCode: " + request.status;
myRouting("", msg, "error");

}
},

success: function (data) {

$.each(data, function() {
result += this.Name + "\n";
});


myRouting("", data, "data");

}
});

return false;
});



$(function myRouting(site, message, type) {


if (type == "error") {
$('#searchFailed').remove();
$('<div id="searchFailed"></div>').appendTo('#searchMain');
$('#searchFailed').append("<p>" + message + "</p>");
}
});


});
</script>

@using (Html.BeginForm("CheckUser", "Account", FormMethod.Post, new { id = "form0" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()

<fieldset>
<legend>Registration Form</legend>
<ol>
<li>
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
</li>



<li>
@Html.LabelFor(m => m.Name)
@Html.TextBoxFor(m => m.Name)
</li>


<li>
@Html.LabelFor(m =>m.Password)
@Html.PasswordFor(m => m.Password)
</li>

<li>
@Html.Label("Confirm Password")
@Html.PasswordFor(m => m.Password)
</li>

<li>
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email)
</li>


</ol>
<input type="submit" value="Register" />
</fieldset>
}

这是我的帐户 Controller

   [HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(User model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{

var result = helper.RegisterUser(model);

if (result)
return RedirectToAction("Index", "Home"); //Json(Url.Action("Index", "Home"));

}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}

return View(model);
}

public ActionResult CheckUser(User model)
{
bool result = helper.IsUserExist(model);

if (result)
{
ModelState.AddModelError("", ErrorCodeToString(MembershipCreateStatus.DuplicateUserName));

return Content("User is already created !!!!");

}
return Register(model);
}

我知道在ajax中,不可能重定向操作,但是如果我可以在ajax中执行“错误”,我可以在ajax中重定向它..

ajax返回内容总是“成功”,即使用户之前没有注册,它仍然是“成功”

最佳答案

不要将 success 事件与代码逻辑部分/授权的成功混淆。

ajax 中的成功意味着请求已通过。您需要检查它返回的数据,看看它是否有信息供您确定它是否成功检查用户。

success事件处理程序中,检查返回的数据。

如果我是你,我不会返回 View ..我可能会返回 JSON,其中清楚地包含有关任务成功或失败的信息..以及可能的错误描述。

关于jquery - Asp.Net MVC 中的 Ajax 返回问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26698476/

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