我有一个表单,我试图用 Ajax / 提交而不重新加载页面。
Ajax 调用正在访问服务器,但它似乎没有调用该函数。我都试过了$.post
和$.ajax
。两者似乎都不起作用。几周前我有一些非常相似的工作,但现在我无法复制它。(最终目标是将模型作为局部视图返回,以便查看验证。)
使用 Firefox,控制器方法立即被命中。使用 Chrome,浏览器选项卡似乎被锁定。它有时会在延迟后击中控制器。(模型信息准确地过来了。)
我在这里做错了什么?
我在这里有我的部分观点:
<% using (Ajax.BeginForm("CreateSimpleReport", "Main", new AjaxOptions { HttpMethod="POST" }, new { id="CreateSimpleReport" })){ %>
<%: Html.ValidationSummary(false, "Report creation was unsuccessful. Please correct the errors and try again.", new { @class = "validation_summary" })%>
<% Html.EnableClientValidation(); %>
<div class="col">
<div class="row">
<div class="label">
<%: Html.LabelFor(m => m.Name)%>
</div>
<div class="field">
<%: Html.TextBoxFor(m => m.Name, new { @class = "input texbox" })%>
<%: Html.ValidationMessageFor(m => m.Name, "*")%>
</div>
</div>
<div class="row">
<div class="label">
<%: Html.LabelFor(m => m.Description)%>
</div>
<div class="field">
<%: Html.TextBoxFor(m => m.Description, new { @class = "input texbox" })%>
<%: Html.ValidationMessageFor(m => m.Description, "*")%>
</div>
</div>
<div class="row">
<div class="label">
<%: Html.LabelFor(m => m.Quantity)%>
</div>
<div class="field">
<%: Html.TextBoxFor(m => m.Quantity, new { @class = "input texbox" })%>
<%: Html.ValidationMessageFor(m => m.Quantity, "*")%>
</div>
</div>
<div class="right"><input type="submit" class="button" value="Create Report" /></div>
</div>
<% } %>
控制器:
[HttpPost]
public string CreateSimpleReport(SimpleReportModel model)
{
if (ModelState.IsValid)
{
// do something
return "success";
}
else
{
return "failure";
}
}
最后,jQuery:
$('#CreateSimpleReport').on('submit', function (e) {
var $this = $(this);
$.post((this), (this), function(data) {
alert('finish');
});
// $.ajax({
// type: 'POST',
// url: (this),
// data: (this),
// success: function () {
// alert('success');
// },
// error: function (jqXHR, textStatus, errorThrown) {
// alert('error');
// }
// }); // end ajax call
});