Разбор составных/смешанных ответов в jQuery

Добрый день.

Я новичок в jQuery и немного знаком с javascript, проведя большую часть своего времени на стороне сервера.

Меня интересует публикация в браузере объекта формы multipart/form-data, состоящего из одного текстового поля и одного файла. В ответ сервер возвращает составной/смешанный ответ, состоящий из одной части html или json и одной части application/octet-stream.

Моя цель - научиться извлекать с помощью jQuery часть html или json и, при желании, отображать ее в целевом div (если html) или перенаправлять на URL-адрес в json (если json) и сохранять поток октетов на диск. Желательно в таком порядке.

Кто-нибудь будет достаточно любезен, чтобы прокомментировать, возможен ли такой анализ составных/смешанных ответов с помощью jQuery, и некоторые идеи о том, как это сделать.

На самом деле, хотя я предпочитаю jQuery, я кое-что узнаю из ответов, созданных в любой популярной среде javascript, и даже из самого простого javascript.

Спасибо.


person ae6rt    schedule 11.09.2010    source источник
comment
См. ответы на тот же, но нейтральный по отношению к фреймворку вопрос в разделе stackoverflow.com/questions/12066640/   -  person Wolfgang Kuehn    schedule 07.02.2014


Ответы (2)


ОТЛИЧНЫЙ вопрос. Судя по существованию этого плагина, я предполагаю, что нет:

Я также нашел эту ссылку в обсуждении этого плагина, которая может быть вам полезна:

http://about.digg.com/blog/duistream-and-mxhr

person prodigitalson    schedule 11.09.2010
comment
Спасибо. Да, я недавно читал об этом плагине. Чего я не мог понять, так это того, можно ли использовать этот плагин, если я включу запись для «application/octet-stream» или нет. Я изрядно погуглил по этой теме, и, похоже, не так много людей говорят о разборе составных ответов. Я могу понять, почему, но ожидал большего обсуждения (и вариантов использования), чем на самом деле нашел. - person ae6rt; 11.09.2010
comment
Да... я занимался разработкой php/js/html/css ГОДЫ, и id даже не думал о многочастном ответе, пока не увидел несколько вопросов по нему здесь, на SO, за последнюю неделю или две. Хотя штука интересная. - person prodigitalson; 11.09.2010
comment
@ ae6rt, если вам удастся успешно разобрать ответ multipart/mixed, что вы собираетесь делать с частью application/octet-stream? - person Darin Dimitrov; 11.09.2010
comment
Составной/смешанный ответ состоит из фрагмента html, который описывает (метаданные) результат сообщения формы. Часть потока октетов на самом деле является другим файлом, который является результатом (данными) сообщения формы. - person ae6rt; 11.09.2010
comment
Хорошо, но что приложение собирается делать с файловым потоком? Я спрашиваю об этом, потому что в своем вопросе вы упомянули что-то о сохранении на диске. Какой диск? - person Darin Dimitrov; 11.09.2010
comment
Похоже, я что-то упустил :-) После того, как я получил байты потока октетов, мой план состоял в том, чтобы открыть диалоговое окно в браузере, спрашивающее пользователя, где (в какое имя файла) сохранить «файл». - person ae6rt; 11.09.2010
comment
О, это просто не будет работать с AJAX. Диалоговое окно «Сохранить» вызывается только тогда, когда с сервера отправляется заголовок Content-Disposition, а запрос не был сделан с использованием AJAX. - person Darin Dimitrov; 11.09.2010
comment
Понимаю. Не исключено, что нужно возвращать только json (теперь вариант использования больше не тот, где возвращается multipart/mixed, а вместо этого application/json) с URL-адресом, по которому может быть получен результирующий файл. получен с сервера с помощью HTTP GET. В этом случае обработка ответа стала намного проще. - person ae6rt; 11.09.2010

Взгляните на API jQuery. Если ваш вызов AJAX возвращает HTML, вы можете использовать функцию .load. Если он возвращает JSON, вы можете использовать функцию .getJSON.

person jerone    schedule 11.09.2010
comment
Спасибо. На самом деле сервер всегда будет возвращать multipart/mixed. Ради обсуждения мы можем предположить, что частями всегда будут «text/html» и «application/octet-stream». - person ae6rt; 11.09.2010