我有一個表格,我試圖用Ajax提交/無需重新加載頁面。這個jQuery表單發佈有什麼問題?
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
});
是否有任何理由爲什麼這會切換到新的頁面作爲內容的結果?我回來了.. – Cody 2012-05-07 16:06:26
不知道。一個可能的原因是您的頁面上的JavaScript錯誤,從而阻止腳本執行並返回false行。 – 2012-05-07 16:11:44