Я хотел бы создать веб-приложение.
Бывают случаи, когда запрос пользователя приводит к обновлению контента в 2-3, а иногда и более контейнерах. Самый простой способ - запускать запросы один за другим в последовательности и обрабатывать результаты один за другим. Я хотел бы получить только один запрос, если это возможно, и собрать все результаты для ответов.
Например: скажем, есть основной контейнер (M) и некоторые другие (меньшие) контейнеры (A, B, C и т. Д.)
Простой способ будет:
запросить основную функцию с сервера для M, показать ее в контейнере M
получить другой контент с сервера, выделенного для A_container, показать его в A_container
получить другой контент с сервера, выделенного для B_container, показать его в B_container
получить другой контент с сервера, выделенного для C_container, показать его в C_container
В зависимости от основной функции, запрашиваемой пользователем, только некоторые контейнеры должны обновлять его содержимое, а не все.
Я бы хотел минимизировать количество запросов. На самом деле свести его к одному. Конечно, это может сделать Json или XML.
Я хотел бы собрать все ответы с сервера, инкапсулировать их (A_container: «это контент для A_container», C_container: «Другой контент для C_container») и отправить его обратно клиенту, где клиент будет распакуйте его, и что касается содержимого, он будет делегировать каждый из них в соответствующий контейнер.
У меня вопрос: как бы вы это сделали, когда знаете, что возвращаемые данные очень переменны: в некоторых случаях они могут содержать даже элементы HTML, кавычки, двойные кавычки и т. Д. Если я не ошибаюсь, в в некоторых особых случаях это может испортить Json и xml.
Моя идея состояла в том, чтобы разделить различное содержимое с помощью специальных разделителей (сейчас просто для простого примера давайте используем xxx и yyy). Это очень уродливое решение, но вы точно не можете испортить содержимое, если разделители достаточно уникальны.
Предыдущее Json-подобное решение выглядело бы так:
«A_containeryyyЭто контент для A_containerxxxC_containeryyyДругой контент для C_container»
Затем на стороне клиента сначала разделите код на xxx, что в этом случае приведет к двум элементам массива (строкам), что будет снова разделено на yyy. Первый элемент даст идентификатор контейнера, а второй - его содержимое. После этого последний шаг будет проходить через новые массивы и отображать результат в соответствующих контейнерах.
Есть ли кто-нибудь, кто предложил бы более хороший способ для этого, или кто мог бы показать безопасный способ сделать это в Json, или XML и т. Д.?