2014-10-19 5 views
0

У меня есть приложение javascript на стороне клиента. При определенном триггере приложение создает новое окно, используя window.open(). В новом окне я хочу разрешить пользователю загружать файл. Для этого в новом окне я предоставил форму. Форма довольно проста - входной элемент типа «файл» и кнопка отправки. Когда пользователь щелкает 1-й элемент, всплывающее окно правильно позволяет выбрать файл из локальной файловой системы. После того, как пользователь выберет файл, когда я нажму кнопку «Отправить», окно просто исчезнет; содержимое файла не загружается на сервер. Сервер является проприетарным сервером, использующим номер порта, с некоторым проприетарным номером порта (скажем, 30000) для сеансов http с клиентами. Если я использую один и тот же javascript в исходном окне (т. Е. Не открывая новое окно), содержимое файла отправляется, и я вижу, что сервер получает содержимое файла. Но если выполняется в новом окне, ничего не происходит. Скрипт (основная часть, необходимая для этой функции) приведен ниже.Загрузка файла из нового окна, открытого с помощью javascript, ничего не делает

myWin = window.open("", "", "width=400, height=400,scrollbars=yes, resizable=yes"); 

var myForm  = myWin.document.createElement("form"); 
myForm.action = ""; 
myForm.method = "post"; 
myForm.enctype = "multipart/form-data"; 
myWin.document.body.appendChild(myForm); 

var myInp = myWin.document.createElement("input"); 
myInp.type = "file"; 
myInp.name = "filename"; 
myForm.appendChild(myInp); 

var myBtn = myWin.document.createElement("input"); 
myBtn.type = "submit"; 
myBtn.value = "Upload"; 
myBtn.onclick = "Upload"; 
myForm.appendChild(myBtn); 

Любая идея, что может быть неправильным? Существуют ли какие-либо дополнительные настройки для нового окна? Я подозреваю, может быть, в новом окне не выполняется загрузка, потому что политика одного и того же происхождения не поддерживается при открытии нового окна - возможно, проприетарный номер порта не копируется из первого окна во второй; но я не уверен; и даже если бы я был, я не знаю, как обойти это. Буду благодарен за любую помощь. Благодарю.

ответ

0

Вы открываете пустое окно, у которого нет URL-адреса. Кроме того, вы устанавливаете действие в форме как пустое, что означает отправку формы на ту же страницу.

Имея пустой URL-адрес во всплывающем окне, нет страницы для отправки, поэтому форма идет в никуда.

Попробуйте один из следующих действий:

  1. Установите строку действий на фактическую страницу вы хотите отправить форму (Это не является кросс-происхождение контролируется). Пример: <form action="submit.php">

  2. Установить URL-адрес всплывающего окна, фактически открыв страницу, которая содержит форму, вместо ее создания с помощью JavaScript. Он будет иметь одинаковый внешний вид/размер, но он будет передан правильно. Убедитесь, что вы либо обрабатываете представления форм на этой странице (если это PHP или ASP), либо правильно настроили действие (как описано выше)

 Смежные вопросы

  • Нет связанных вопросов^_^