MVC Ajax 警报无法正常工作
MVC Ajax alert not working properly
我的 alert() 在发布后没有显示...
当我提交表单时,我看到发布的数据,一切看起来都不错,但是 alert('ok');来自 ajax 没有出现。我错过了什么?
@model Mvc5.Models.Test
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.TextBoxFor(model => model.Name)
<input type="submit" value="Add" class="btn btn-default" id="idForm" />
}
<div id="target">
@Html.Action("ShowList", "Test")
</div>
<script>
$(document).ready(function () {
// this is the id of the form
$("#idForm").submit(function () {
var url = "Test/Create"; // the script where you handle the form input.
$.ajax({
type: "POST",
url: url,
data: $("#idForm").serialize(), // serializes the form's elements.
success: function (data) {
alert('ok');
}
});
return false; // avoid to execute the actual submit of the form.
});
});
</script>
如下所示添加错误并查看正在显示的警告消息。您还可以添加调试器和开发人员工具来调试它们。
$.ajax({
type: "POST",
url: url,
data: $("#idForm").serialize(), // serializes the form's elements.
success: function (result, status) {
if (status == 'success') {
if (result.success) {
OnSuccessActions();
} else {
$('.ValidationSummary').html(result.Error);
}
}
},
error: function() {
alert('error!');
}
});
你应该在提交给控制器之前验证表单,见下面的代码
$("#myForm").submit(function (e) {
e.preventDefault();
});
$("input#submitForm").click(function () {
if ($('#myForm').valid()) {
$.ajax({
type: "POST",
url: "/controllerName/ActionName",
data: $("#myForm").serialize(),
success: function (result) {
alert('sucess');
}
});
} return false;
});
并且不要忘记包含验证脚本
src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript">
src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript">
还有 return json 来自控制器
public ActionResult ActionName()
{
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
希望对你有所帮助
如果您的 ajax 请求收到从您的 api 返回的 200 状态代码,您的成功函数将 运行。我会仔细检查以确保发生这种情况。
编辑。
您还应该阻止表单执行服务器回发,因为您正在进行 ajax 调用。
$("#idForm").submit(function (e) {
e.preventDefault();
var url = "Test/Create"; // the script where you handle the form input.
我的 alert() 在发布后没有显示...
当我提交表单时,我看到发布的数据,一切看起来都不错,但是 alert('ok');来自 ajax 没有出现。我错过了什么?
@model Mvc5.Models.Test
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.TextBoxFor(model => model.Name)
<input type="submit" value="Add" class="btn btn-default" id="idForm" />
}
<div id="target">
@Html.Action("ShowList", "Test")
</div>
<script>
$(document).ready(function () {
// this is the id of the form
$("#idForm").submit(function () {
var url = "Test/Create"; // the script where you handle the form input.
$.ajax({
type: "POST",
url: url,
data: $("#idForm").serialize(), // serializes the form's elements.
success: function (data) {
alert('ok');
}
});
return false; // avoid to execute the actual submit of the form.
});
});
</script>
如下所示添加错误并查看正在显示的警告消息。您还可以添加调试器和开发人员工具来调试它们。
$.ajax({
type: "POST",
url: url,
data: $("#idForm").serialize(), // serializes the form's elements.
success: function (result, status) {
if (status == 'success') {
if (result.success) {
OnSuccessActions();
} else {
$('.ValidationSummary').html(result.Error);
}
}
},
error: function() {
alert('error!');
}
});
你应该在提交给控制器之前验证表单,见下面的代码
$("#myForm").submit(function (e) {
e.preventDefault();
});
$("input#submitForm").click(function () {
if ($('#myForm').valid()) {
$.ajax({
type: "POST",
url: "/controllerName/ActionName",
data: $("#myForm").serialize(),
success: function (result) {
alert('sucess');
}
});
} return false;
});
并且不要忘记包含验证脚本
src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript">
src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript">
还有 return json 来自控制器
public ActionResult ActionName()
{
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
希望对你有所帮助
如果您的 ajax 请求收到从您的 api 返回的 200 状态代码,您的成功函数将 运行。我会仔细检查以确保发生这种情况。
编辑。
您还应该阻止表单执行服务器回发,因为您正在进行 ajax 调用。
$("#idForm").submit(function (e) {
e.preventDefault();
var url = "Test/Create"; // the script where you handle the form input.