У меня есть форма с некоторыми данными и загрузка. Загрузка может быть инициирована только в том случае, если данные были успешно получены и обработаны. Для этого я делаю вызов ajax, где I
- отправить данные,
- проверить его результат,
- вызвать клик(), чтобы открыть диалоговое окно файла.
Последняя вещь с click() не работает, поскольку кажется, что блоки асинхронного вызова открывают окно загрузки. Он работает, только если я установил async: false
.
Я не могу найти что-либо в документации и на этом сайте и хочу знать, в чем проблема, и как заставить ее работать, сохраняя асинхронный вызов?
Пример:
$.ajax({
type: "POST",
url: "/Save",
data: jsonText,
dataType: "json",
//async: false [1]
}).done(function (msg) {
$("#upload").click();
});
//$("#upload").click(); [2]
Демо: http://jsfiddle.net/c2v00uxn/
Примечание:
- Если я раскомментирую [1] или [2], он работает (диалог файла появляется, как ожидалось).
- заменить click() с помощью триггера ('click') не работает
- заменить click() с помощью live()/on() не помогает
- Управление загрузкой файлов видно в соответствии с примером (так что это не из-за скрытого управления).
- Настройки таймаута для ajax не помогают.
ОБНОВЛЕНИЕ
Это не о том, как сделать "click" в общем, о том, как щелкнуть после асинхронного вызова ajax (на данный момент работает только с неасинхронным вызовом).