【发布时间】:2015-06-06 18:12:48
【问题描述】:
我需要有条件地打开文件上传对话框:
<input type="file" id="Upload">
基于来自服务器的 Ajax 响应。输入元素是隐藏的,因为我不希望显示默认的丑陋文件文本框和按钮。所以我有另一个元素,用户单击以启动上传。
从用户启动事件上下文的脚本中可以正常工作。
$('#Upload').click();
但是当 Ajax 调用的响应执行它时会失败。现在我知道出于安全考虑,这是 Firefox 和 Chrome 的设计,但在我的情况下,用户启动 ajax 调用,服务器需要决定服务器上的条件当前是否允许上传。如果是这样,我想打开文件上传对话框,否则我需要发布一条消息,说明由于 x 原因不允许该操作(由服务器返回)。
问题在于 Ajax 回调不在用户脚本上下文中,因此打开文件对话框(按设计)的 .click() 未执行。
还有什么办法可以解决这个问题?有没有办法捕获用户事件上下文并将其重用于 Ajax 调用的回调?
【问题讨论】:
-
请把代码贴出来好吗?
-
除了 "$('#Upload').click();" 之外没有其他代码可以显示我需要这段代码从 Ajax 回调中工作。适用于用户事件上下文,但不适用于 Ajax 回调。如果您可以从回调函数中执行该行脚本,那么您已经解决了我的问题。
标签: javascript jquery ajax file-upload