Как: jQuery отправить в Ashx файл, чтобы принудительно загрузить результат? - PullRequest
1 голос
/ 24 июня 2010

У меня есть обработчик ashx, который берет свойство 'html' из запроса, а затем возвращает его обратно тому, кто его вызвал. У меня также есть Content-Disposition, установленный как приложение.

Вызов страницы напрямую работает, как и ожидалось, вызывая загрузку с помощью диалогового окна сохранения как.

Я застрял на следующем: мне нужно сделать это из javascript (jQuery). Я буду публиковать содержимое div и выполнять дальнейшую обработку.

Может ли кто-нибудь дать мне несколько советов о том, как это делается?

Большое спасибо.

1 Ответ

1 голос
/ 24 июня 2010

Я бы (на самом деле, сделал :-)) имел форму со скрытым полем, скопировал бы содержимое div в поле, а затем отправил бы форму в скрытый (display: none) iframe.

Включая скрытый iframe на странице:

<iframe name="formTarget" src="blank.html" style="display: none">

(Например, изначально он пустой. Я на самом деле буквально использую файл blank.html, который звучит именно так, а не (скажем) about:blank потому что последний в некоторых случаях работает не совсем корректно; я не помню подробностей.)

Указание форме отправить в iframe и вызвать ваш файл ashx:

<form ... action="your.ashx" target="formTarget" ... >

Копирование содержимого div в поле:

$("#fieldId").val($("#divId").html()); // Either .html() or .text(), depending on what you want

Отправка формы:

$("#formId").submit();

(Заполните различные "..." соответственно.)

В моем случае я показываю оверлейный div, сообщающий пользователю, что я делаю, и запускаю таймер, который следит за содержимым iframe (для сообщений об ошибках) и для cookie состояния (см. thisОтветьте , чтобы узнать больше об уловке печенья).Оверлей обновляется или удаляется в зависимости от результата.

...