我有一个隐藏的输入:
<input class="hidden" id="imageInput" type="file" accept="image/*;capture=camera" />
这样做的方式&#34;点击&#34;是有一个标签调用这样的函数:
<label onclick="verifyValue(); return false;" class="hand-pointer">Click me!</label>
我的verifyValue()
函数看起来像这样:
function verifyValue() {
app.ajax({
type: "POST",
dataType: 'json',
url: myUrl + '/DoSomeVerification',
contentType: 'application/json; charset=utf-8',
cache: false,
data: JSON.stringify(myData),
success: function (result) {
//Success? Cool, stuff has been verified
//Let's let them upload their image
$('#imageInput').click();
}
error: {
//Other stuff that's not relevant
}
});
}
我的问题是$('#imageInput').click();
不起作用。当我通过它进行调试时,它会进入该行,然后绝对不做任何事情。我没有错误,没有上传文件或任何内容的对话框。
为了测试它不是我的代码的其他方面我摆脱了AJAX帖子并将该功能简化为click事件。当我摆脱AJAX帖子时,它就像一个魅力。
此外,如果我执行此类操作而不是.click()
:
$('#pickTicketImageUpload').removeClass('hidden');
使用Choose File
按钮显示输入,然后让我点击它并上传文件。
我想知道这是否是某种浏览器安全功能,或者是否还有其他我遗漏的东西。如果它是某种安全功能,那么它周围有吗?
还应该提到它,以便没有人挂断它,这是一个内部应用程序,我一点都不担心有人可以劫持这个并上传他们的图像而不用做AJAX帖子。
答案 0 :(得分:3)
由于w3c推荐的浏览器安全功能,现在无法从异步ajax回调打开文件弹出窗口。