如果从AJAX帖子调用,则不会单击图像上传的输入

时间:2016-12-29 21:19:07

标签: javascript jquery html ajax

我有一个隐藏的输入:

<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帖子。

1 个答案:

答案 0 :(得分:3)

由于w3c推荐的浏览器安全功能,现在无法从异步ajax回调打开文件弹出窗口。

请检查Trigger click on input=file on asynchronous ajax done()