У меня странное поведение в IE6, и мне нужна помощь, чтобы разобраться в этом.
Я добавляю следующие элементы DOM в конец тела моего документа, используя javascript:
<IFRAME id="qq-upload-handler-iframe0" style="DISPLAY: none" src="javascript:false;" />
<FORM method="post" target="qq-upload-handler-iframe0" encType="multipart/form-data" style="DISPLAY: none" action=/AgriShare-AD-Sys/ajaxfileupload?clientId=importSubmissionFromExcelLinkId&qqfile=AB_PTPTA_10358.xls>
<INPUT type="file" value="AB_PTPTA_10358.xls">
</FORM>
Затем я отправляю форму, используя javascript. action
указывает на сервлет, который возвращает следующее:
HTTP/1.1 200 OK
Date: Fri, 27 May 2011 23:33:48 GMT
Server: Oracle-Application-Server-10g/10.1.3.5.0 Oracle-HTTP-Server
Set-Cookie: JSESSIONID=b59f0434f57ace32aebc8b6d113c7e48171824e1d157cf99152140657e6c68a5.e34PaNiLaNuPbO0OaN8Rb3aRbN50; path=/AgriShare-AD-Sys
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/octet-stream; charset=ISO-8859-1
f
{success: true}
0
Мое намерение состояло в том, чтобы {success: true}
оказался в теле iframe, где я могу получить доступ к нему из обратного вызова, который я прикрепил с помощью iframe.attachEvent('onLoad', callback)
. После завершения обратного вызова я удаляю форму и iframe, чтобы этот код можно было снова запустить на той же странице. Это действительно работает, но никогда в первый раз после загрузки страницы.
В первый раз, когда я отправляю эту форму, IE6 предоставляет мне диалоговое окно «Загрузка файла» с просьбой сохранить файл с именем ajaxfileupload.xls
. Если я сохраню его, этот файл содержит {success: true}
, который должен был быть помещен в iframe! Кроме того, обратный вызов никогда не вызывается.
Однако любые последующие звонки работают отлично! Данные ответа попадают в тело документа iframe и выполняется обратный вызов.
Я сравнил трассировки пакетов с первой и второй попыток, и они идентичны, так что это должно быть проблемой браузера. Почему IE6 хочет сохранить ответ в файл в первый раз?
Спасибо.
UPDATE:
Я только что попробовал то же самое с Tomcat, и проблема исчезла. Ответ от Tomcat выглядел так:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Date: Sat, 28 May 2011 00:13:32 GMT
Server: Apache-Coyote/1.1
f
{success: true}
0
Еще нужно выяснить, почему он не работает на Oracle, хотя ...