Можно ли вернуть HTML-разметку в ответе, отличном от HTTP-200? - PullRequest
2 голосов
/ 05 мая 2011

Представьте, что у вас есть форма на странице, и вы отправляете данные этой формы на сервер AJAXian, например. jQuery.post (). Сервер считает, что данные недействительны, потому что, скажем, адрес электронной почты не содержит символ «@».

Я думаю, что дух HTTP говорит, что сервер должен вернуть код состояния «HTTP 400 Bad Request» со своим ответом, чтобы указать клиенту, что он не может обработать запрос. причина (данные не подтверждены) должны быть в теле ответа.

Но я работаю в среде ASP.NET MVC, в которой традиционно реализованы «частичные представления» - фрагменты HTML, отправляемые в виде ответов, предназначенные для замены в DOM клиента при получении из запроса AJAX. В этой парадигме сервер обычно создает альтернативную версию формы, заполненную (недействительными) отправленными значениями и стилизованную с помощью красных подсветок и предупреждений, указывающих, что адрес электронной почты был недействительным и должен быть исправлен. Клиент подставляет эту форму в свою DOM, и пользователь видит проблему.

Это достаточно распространенный шаблон в мире MVC, но я не вижу никого, кто бы позаботился о том, чтобы установить соответствующий код состояния HTTP. Я не могу понять, почему.

Можно ли включать HTML-разметку в ответ, отличный от HTTP-200, чтобы клиент мог показать проверку? Я не могу найти ничего, что говорит, что это не так.

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Зависит от возвращаемого кода состояния и того, как вы собираетесь его использовать, но обычно вы можете.

0 голосов
/ 05 мая 2011

Если вы знаете, что ответ может быть проанализирован, отправьте документ json / xml с правильным типом mime и информацией внутри. В противном случае просто отправьте удобочитаемый контент HTML. В обоих случаях очевидно установить правильный код статуса HTTP.

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