Использование XML для ответа Ajax по сравнению с обычным HTML - PullRequest
2 голосов
/ 10 августа 2011

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

Ответы [ 3 ]

2 голосов
/ 10 августа 2011

Я думаю, это зависит от того, куда вы возвращаетесь. Обычно, если возвращение в javascript (который я предполагаю здесь) является выгодным для повторного использования формата JSON. JSON прост и легок. В .NET, а также в jQuery есть методы, которые могут анализировать и сериализовать / удалять данные.

jQuery.parseJSON( "json" ) 

это будет анализировать строку JSON для объекта JQuery

JSON.stringify(your_object) 

это разобьет объект в строку jquery, которую вы можете отправить до вызова ajax

using System.Web.Script.Serialization;
IList<NewFee> ExistingNewFees = new JavaScriptSerializer().Deserialize<IList<NewFee>>(ExistingNewFeesJSON);

этот фрагмент иллюстрирует десертирование строки json в общий тип списка предопределенного класса.

1 голос
/ 11 августа 2011

Если вы действительно сравниваете XML с JSON, то в дополнение к хорошему совету, который вы уже получили от Mads и JBone:

В большинстве случаев, когда вы имеете дело с видами элементов данных, которые аккуратно отображаются на типичные переменные и структуры языка программирования, JSON имеет тенденцию быть более удобным. XML обладает гораздо большей силой, если по какой-то причине вы передаете размеченный текст или то, что мы могли бы неофициально назвать «документами». Примером, который я часто использую, является страховая компания:

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

  • Если вы пытаетесь вернуть текст действующего страхового полиса с заголовками разделов, помеченными тегами, то это так называемая возможность смешанного содержимого XML (возможность иметь теги в середине текста, например этот ) гораздо более уместен, чем JSON.

  • Если вы хотите объединить списки данных с шаблонами документов (например, шаблон для страхового полиса, с заполнителями для имени застрахованного лица и размера покрытия), тогда используйте XML для ваших данных и ваш шаблон может разрешить использование таких языков, как XSLT или XQuery для их объединения

Все это говорит о том, что как минимум 95% того, что люди делают с веб-приложениями сегодня, JSON - разумный выбор.

0 голосов
/ 11 августа 2011

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

Если это XML-ответ, ваши AJAX-вызовы должны быть истинными. Асинхронный JavaScript и XML, ограниченные запросом информации из того же домена, из которого размещена веб-страница, а не динамические элементы сценария, извлекающие JavaScript, который может запрашивать данные из в любом месте.

Предоставление интерфейса JSON открывает людям возможность использовать JavaScript для генерации динамических тегов <script> и извлечения данных JSON, которые вы предоставляете из любого места, независимо от того, где «живет» код.

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

Если вы представите свои данные в виде XML, им потребуется, чтобы ваш объект XMLHttpRequest связывался с вашим интерфейсом из браузера (без включения исключений безопасности) и мог взаимодействовать только с сайтом, на котором находится веб-страница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...