发布后我的提醒()未显示...
当我提交表单时,我看到发布的数据,看起来都很好,但警报('确定');来自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>
答案 0 :(得分:0)
添加错误,如下所示,查看正在显示的警报消息。您还可以添加调试器和开发人员工具来进行调试。
$.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!');
}
});
答案 1 :(得分:0)
您应该在提交给控制器之前验证表单,请参阅下面的代码
$("#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">
还从控制器返回json
public ActionResult ActionName()
{
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
}
我希望它会对你有所帮助。
答案 2 :(得分:0)
如果您的ajax请求从您的api收到200状态代码,您的成功函数将会运行。我要仔细检查以确保发生这种情况。
修改。
您还应该阻止表单执行服务器回发,因为您正在进行ajax调用。
$("#idForm").submit(function (e) {
e.preventDefault();
var url = "Test/Create"; // the script where you handle the form input.