joh*_*kes 33 ajax asp.net-mvc jquery form-submit
我对这一切都很陌生.我正在使用ASP.NET MVC C#LINQ to SQL.
我有一个编辑页面,可以加载作者及其所有书籍.通过Ajax调用加载Books .
<script type="text/javascript">
$(document).ready(function() {
LoadBooks();
});
function LoadBooks() {
$(".Books").hide();
$(".Books").load("/Books/Edit/<%= Model.AuthorID %>");
$(".Books").show('slow');
}
</script>
Run Code Online (Sandbox Code Playgroud)
这部分工作正常.页面加载作者信息,然后加载书籍(DIV id ="Books"中的部分视图,只有书籍类别和书名):
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Solution.Controllers.BooksController+BooksViewModel>" %>
<% using (Html.BeginForm(null,null, FormMethod.Post,new { id = "bookform" }))
{%>
<fieldset>
<legend>Books</legend>
<%int i = 0;
foreach (var book in Model.Books)
{%>
<%= book.BookID%>
<%= Html.Hidden("book[" + i + "].BookID", book.BookID) %>
<%= Html.DropDownList("book[" + i + "].CatID", new SelectList(Model.Categories, "CatID", "CatTitle", book.CatID))%>
<%= Html.ValidationMessage("CatID", "*")%>
<%= Html.TextBox("book[" + i + "].BookTitle", book.BookTitle)%>
<%= Html.ValidationMessage("BookTitle", "*")%>
<br />
<%i++;
} %>
</fieldset>
<% } %>
Run Code Online (Sandbox Code Playgroud)
现在,在主视图页面上我想要一个链接.点击链接后,我想通过JavaScript/jQuery/Ajax /做任何事情.我想要发生的第一件事是从部分视图提交Books表单(id = booksform),然后继续下一个jQuery函数.所以,我点击一个调用JavaScript函数的链接.此函数应调用/执行/执行Books表单的提交.
我觉得我已经尝试了所有的东西,但是我无法在没有完整页面提交/刷新的情况下提交和处理我的图书表单.(注意,当完整提交确实发生时,我在控制器中期望的操作会成功处理).我希望控制器进程/操作除了某种成功/失败指示之外什么也不返回.(然后我可以再次调用"LoadBooks();"来刷新页面上的DIV.
有任何想法吗?
Mis*_* N. 62
我就是这样用jquery做的:
function DoAjaxPostAndMore(btnClicked)
{
var $form = $(btnClicked).parents('form');
$.ajax({
type: "POST",
url: $form.attr('action'),
data: $form.serialize(),
error: function(xhr, status, error) {
//do something about the error
},
success: function(response) {
//do something with response
LoadBooks();
}
});
return false;// if it's a link to prevent post
}
Run Code Online (Sandbox Code Playgroud)
我假设btnClicked在表单内:
<input type="button" value="Submit" onclick="DoAjaxPostAndMore(this)"/>
Run Code Online (Sandbox Code Playgroud)
如果链接:
<a href="/url/something" onclick="return DoAjaxPostAndMore(this)">linktext</a>
Run Code Online (Sandbox Code Playgroud)
如果链接不在表单内部,您只需使用jquery选择器来查找它.您可以将id设置为表单,然后找到如下形式:
var $form = $("#theformid");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64185 次 |
| 最近记录: |