MVC3 Использование Javascript для обратной передачи аналогично тому, как работает $.post, но с фактической обратной передачей?

У меня есть приложение ASP.NET MVC3, в котором есть форма с вводом вложенной таблицы.

(Т.е. в каждой строке я могу добавить подтаблицу без ограничения глубины)

Чтобы справиться с этим для моего приложения MVC, я создал 2 класса javascript (используя этот термин свободно с js :), которые отражают мою модель MVC3 и отправляют данные в метод действия. Все отлично работает... За исключением того, что на данный момент я знаю только один способ сделать это с помощью jquery $.ajax или $.post --- Как я могу выполнить обратную передачу в javascript?

У меня есть URL-адрес и пользовательские данные JSON, и я хочу выполнить обратную передачу страницы... Есть предложения? Я не могу использовать обычную отправку формы из-за сценария с вложенной таблицей, описанного выше.

Кроме того, я просто хочу сказать, что MVC сделал это таким простым для рендеринга! :) Для рендеринга рекурсивного вида делал все без всяких скриптов, только на сохранении пришлось ковыряться с json.

Обновление. Думаю, другим решением будет -- могу ли я изменить содержимое данных формы при отправке? Мой метод принимает объект JSON, могу ли я каким-либо образом заполнить его в своем запросе, пока моя форма отправляется в обычном режиме?


person Yablargo    schedule 08.07.2011    source источник
comment
Я не уверен, что вы имеете в виду: я знаю, как это сделать с помощью jquery $.ajax или $.post --- Как я могу выполнить обратную передачу в javascript? -- Функция jQuery ajax называется 'javascript' - по сути, это оболочка объекта javascript XMLHttpRequest.   -  person Casey Flynn    schedule 08.07.2011
comment
Правильно, но это асинхронный вызов - мне было интересно, могу ли я имитировать обычную отправку формы и выполнять обратную передачу, в отличие от вызова ajax.   -  person Yablargo    schedule 08.07.2011
comment
Это в основном потому, что на странице есть приличный объем настроек и инициализации, и я считаю, что было бы чище сделать новую перезагрузку, чем пытаться жонглировать повторной инициализацией всего после вызова ajax.   -  person Yablargo    schedule 08.07.2011


Ответы (3)


Для этого можно использовать XML Http-запрос. В конечном итоге это то, что используют jQuery и другие библиотеки JS.

Но почему бы вам просто не использовать jQuery AJAX или POST?

person MartinHN    schedule 08.07.2011
comment
Думаю, я просто хотел, чтобы это работало как обычная форма/отправка, где пользователь получал бы обратную передачу и новую страницу. Я понимаю, что могу просто взять результаты и загрузить их обратно, полагая, что было бы чище просто загрузить новую страницу (как если бы я использовал обычную форму/отправить) в случае сбоя. - person Yablargo; 08.07.2011

Возможно, я неправильно понимаю ваш вопрос, но похоже, что вы хотите опубликовать сообщение на той же странице, на которой находитесь, а это означает, что если у вас есть URL-адрес (и похоже, что у вас есть), вам просто нужно указать это в метод $.ajax? Может быть, вы можете немного пояснить, что вы имеете в виду для нас.

Изменить: в комментарии предлагается посмотреть http://jquery.malsup.com/form/

person Cameron    schedule 08.07.2011
comment
Мой $.post работает, я просто хотел избежать загрузки ответа обратно и повторного запуска документа document.ready(). Кроме того, когда отправка выполнена успешно и пользователь перемещается в другое представление, ни один из уже загруженных сценариев для страницы ввода формы больше не нужен. - person Yablargo; 08.07.2011
comment
Вы смотрели на это? Это может быть полезно для вас. jquery.malsup.com/form - person Cameron; 09.07.2011

Что ж, я обнаружил, что с привязкой MVC3 таблица в моей форме может быть нормально связана, если я назову поля, такие как Item[0].Children[1].Children[0].FieldA... и т. д., все совпало отлично, без необходимости конвертировать в объекты javascript/json. Я изменил свой код, чтобы исправить это имя перед отправкой формы, и он довольно хорошо связывается без каких-либо вызовов json. Менее элегантно, но я думаю, что это работает.

person Yablargo    schedule 08.07.2011