2009-09-15 2 views
2

Это вопрос технического дизайна, а не синтаксический вопрос.Отправка нескольких форм сразу с помощью Ajax

У меня есть большая страница с 9 формами, соответствующими различным таблицам. Я боролся с дизайном, и у меня нет выхода, я должен отправить все формы через ajax на сервер для обработки. Есть много взаимосвязей. Я не могу комбинировать формы в один большой. Поэтому вопрос заключается в том, что лучший способ отправить много форм через ajax. Для дальнейшего усложнения проблемы существуют динамические формы с полями с одинаковыми именами.

Я пытаюсь техникой:
1. сериализации каждой формы, 2. предваряя имя формы для каждого имени поля 3. комбинируя сериализированный вариант форм в одну 4. проводки, сочетающей сериализованными формы к серверу как один 5. Разбиение их на стороне сервера в отдельные массивы, а затем, наконец, выполнение логики приложения

Я просто не знаю, есть ли проверенное и правдоподобное решение, и я делаю гора из мола-холма

+0

Есть ли способ отправить их в один большой звонок Ajax? Простым способом (что важно с чем-то столь же утонченным, как Ajax) было бы сделать все поля членами одной и той же формы и использовать backend-скрипт для делегирования и логики. Кажется немного более пуленепробиваемым. – 2009-09-15 12:51:04

+0

да, я могу их комбинировать. Я описывал, как я это сделаю, объединив сериализованную форму. Я должен сериализовать каждую форму, прежде чем отправлять ее в Ajax. – sdfor

ответ

2

Если у вас действительно нет возможности перепроектировать страницу, то ваше решение кажется простым и понятным для меня, а вовсе не «горным». Для меня, однако, ваше описание страницы кричит «редизайн», хотя, конечно, у меня недостаточно информации для работы.

Одним из таких редизайнов является отправка изменений на сервере, как только они происходят, а не ожидания и отправки всего объекта. Серверная сторона может удерживать их как «ожидающие», если вам нужно, чтобы пользователь явно совершил все это, когда они были сделаны. Но это зависит от расхода ресурсов сервера и т. Д.

+0

Это будет решение между этими двумя методами - все сразу или по частям. У каждого из них есть свои осложнения.Он похож на систему ввода заказов с зависимостями заголовков и деталей, а детали имеют свои собственные зависимости. спасибо за ваши мысли. – sdfor

1

Я готовлю диспетчер javascript, который будет выполнять работу по размещению данных. Поэтому, когда кнопка отправки нажата, он будет собирать все необходимые данные и затем отправлять данные в соответствующие контроллеры на стороне сервера. Он может блокировать форму, тем временем, или отображать всплывающее окно «Обработка ...».

+0

Разве это не то, что он сказал, что он делает? –

2

Вы должны иметь возможность отправлять 9 отдельных запросов AJAX без хлопот (при условии, что: каждый не полагается на ответ другого, и b: это не что-то, что происходит все время).

Использование вашей javascript-библиотеки (вы используете один, правый?) просто пройдите через свои формы и отправьте AJAX каждый. Я думаю, что это, вероятно, будет обрабатываться, вероятно, только по 2 за раз, но если это не проблема для вашего дизайна, тогда все должно быть сладким.

Это, несомненно, сохранит часть уравнения PHP/Server-Side намного проще.

Если вы работаете с сайтом с высоким трафиком, то вы, вероятно, захотите уменьшить количество выполненных запросов, но вероятность того, что ваша текущая настройка будет работать достаточно хорошо.

+0

Замечание к этому вопросу: если вы * отправляете девять запросов, помните, что после первой пары они будут стоять в очереди и последовательно, а не параллельно, даже если вы отправляете их асинхронно. Большинство браузеров и многие серверы ограничивают одновременные запросы между теми же конечными точками (по два за раз, обычно). Так что это может занять некоторое время. –

+0

Это поднимает точку зависимостей. Когда обновления должны выполняться поочередно, по крайней мере некоторые из них, вы не можете отправить их сразу, но вам нужно подождать, пока вы не закончите, используйте его результаты перед отправкой второго. Это увеличило бы общее время. Мне нужно выбирать между постоянным обновлением каждой формы и сохранением данных в режиме ожидания, пока пользователь не «сохранит», как вы рекомендовали T.J. или объединить все формы в один submit и иметь один серверный синтаксический анализ и обработать его. спасибо всем! – sdfor