![](/img/trans.png)
[英]javascript, jQuery and ajax function not working properly in asp.net MVC
[英]How to run a JavaScript function after a successful jQuery Ajax request to ASP.NET MVC controller?
我正在使用一個具有登錄/注冊功能的簡單網站。 我只想讓用戶在成功登錄或注冊后收到一條消息。
這是我的登錄方法
控制器:
[HttpPost]
public ActionResult Login(string username,string password)
{
User loginTest = DB.Users.Where(a => a.User_Name.Equals(username) && a.User_Password.Equals(password)).FirstOrDefault();
if (loginTest != null)
{
//some code
}
else
{
return Redirect(Request.UrlReferrer.ToString());
}
}
我正在這樣調用登錄方法
@using (Ajax.BeginForm("Login", "Home", new AjaxOptions() { UpdateTargetId = "logged-in", InsertionMode = InsertionMode.Replace }))
{
<input type="text" />
<input type="password" />
<input type="submit" value="login">
}
如果登錄成功,這是我要運行的javascript函數。
<script type="text/javascript">
function JSalert(){
swal("Logged in successfully");
}
</script>
我已經加了
<link href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
我測試了按鈕單擊時的功能,該功能是否起作用,我對此還很陌生,我想知道在用戶登錄后如何調用此功能。
我已經檢查了這些鏈接,但無法獲得任何幫助。
謝謝。
重定向后,有幾種顯示警報或任何消息的方法。
在您的重定向語句中,使用以下代碼
return Redirect(Request.UrlReferrer.ToString()+"login_success=1");
在您的ajax成功中,使用以下代碼,它將起作用
if(window.location.href.indexOf("login_success=1")){
//call your function
}
您可以使用:
using (Ajax.BeginForm("Login", "Home", new AjaxOptions { HttpMethod = "Post", OnSuccess = "onSuccess" })){
//your code
}
在您的js中:
function onSuccess(result) {
//return your message here
}
使用這個方法
@using (
Ajax.BeginForm("Register", "Account", null, new AjaxOptions(){
HttpMethod = "POST",OnSuccess = "OnSuccess"
}, new {
@class = "form-horizontal", role = "form"
}))
{
}
JS功能:
function OnSuccess(response) {
if (response.status === 'validationerror') {
//your code
} else {
//your code
}
}
歡迎使用堆棧溢出。 您不必使用該Ajax.BeginForm 。 您可以編寫一些純HTML。
<form>
<input type="text" id="username" placeholder="login">
<input type="text" id="password" placeholder="password">
<input type="button" value="Log In" id="postIt">
</form>
為了進行Ajax調用,請將一些JavaScript / jQuery代碼添加到同一cshtml文件中。
<script>
$("#postIt").click(function() {
postIt();
});
function postIt() {
var usr = $("#username").val();
var pwd = $("#password").val();
$.ajax({
type: "POST",
url: "/Login/LogMeIn",
data: { "Username": usr, "Password": pwd },
success: function(data) {
if (data.result) {// logged in
JSalert(data.result);
} else {// unauthorized
JSalert(data.result);
}
}
});
}
function JSalert(msgType) {
if (msgType) {
swal("Logged in successfully", "Welcome to StackOverflow", "success");
} else {
swal("You're not authorized", "Welcome to StackOverflow", "error");
}
}
</script>
然后,將簡單的登錄方法添加到控制器中。
[HttpPost]
public JsonResult LogMeIn(LoginModel data)
{
if (data.Username == "rightUser" && data.Password == "rightPass")
{
return Json(new { result = true, message = "welcome" });
}
return Json(new { result = false, message = "unauthorized" });
}
LoginModel.cs
public class LoginModel
{
public string Username { get; set; }
public string Password { get; set; }
}
_Layout.cshtml
<!DOCTYPE html>
<html>
<head>
...
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.min.js"></script>
</head>
<body>
@RenderBody()
</body>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.