Jestem całkiem nowy na to wszystko. Używam ASP.NET MVC C# LINQ to SQL.MVC jQuery przesłać formularz (bez odświeżania strony) z funkcji JavaScript
Mam stronę edycji, która ładuje autorów i wszystkie ich książki. Księgi ładowane są za pomocą wywołania Ajax.
<script type="text/javascript">
$(document).ready(function() {
LoadBooks();
});
function LoadBooks() {
$(".Books").hide();
$(".Books").load("/Books/Edit/<%= Model.AuthorID %>");
$(".Books").show('slow');
}
</script>
Ta część działa bez zarzutu. Obciążenia stronę z informacją Autor, wówczas obciążenia Książki (częściowy widok w div id = „Książki”, właśnie z kategorią Book i Book tytuł):
<%@ 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>
<% } %>
teraz, w głównym widoku Strona I chcesz mieć link. Po kliknięciu łącza chcę zrobić kilka rzeczy za pomocą JavaScript/jQuery/Ajax/cokolwiek. Pierwszą rzeczą, którą chcę zrobić, jest przesłanie formularza Książki (id = booksform) z widoku częściowego, a następnie przejście do następnej funkcji jQuery. Klikam więc link, który wywołuje funkcję JavaScript. Ta funkcja powinna wywoływać/wykonywać/wykonywać wysyłanie formularza Książek.
Czuję, że wypróbowałem wszystko, ale nie mogę pobrać formularza książki do przesłania i przetworzenia bez pełnego przesłania/odświeżenia strony. (Uwaga: kiedy ma miejsce pełne przesłanie, operacje, których oczekuję w kontrolerze, zostaną pomyślnie przetworzone). Chcę, aby proces/akcja kontrolera zwracał tylko pozory sukcesu/porażki. (Mogę wtedy nazywamy „LoadBooks();”.? Ponownie, aby odświeżyć DIV na stronie
Wszelkie pomysły
Co się stanie, jeśli klikną link (a nie przycisk) znajdujący się poza formularzem? Jak przypisać formularz do zmiennej (var $ form), a następnie? Dzięki. – johnnycakes
Po prostu wypróbowałem Twoją sugestię, przypisując wartość zmiennej do zmiennej za pomocą var $ form = document.getElementById ('bookform'); Po kliknięciu linku nic się nie dzieje. – johnnycakes
Zaktualizowałem moją odpowiedź. getElementById zwraca obiekt javascript, a nie obiekt jquery, zamiast tego użyj $ ("# bookform"). –