javascript - Ajax 调用成功后 JQuery 调用不工作

标签 javascript ajax

我有一个 Ajax 调用,如下所示:

$("#start-upload-btn").click(function(){
    $.ajax({
        type: "post",
        url: "",
        data: {
            newProjectName: $('#project-name').val(),
            csrfmiddlewaretoken: csrfToken
        },
        success: function(data){
            $("#file-upload").click();
        }
    })
});

成功后,我想单击 id #file-upload 的元素来启动文件选择对话框,但将代码放入 success 函数中失败。它在其他任何地方都有效。 Ajax 成功函数的范围有什么特别之处吗?我实在是想不通。

谢谢

最佳答案

通过 ajax 成功回调在任何普通元素(包括按钮)上发出 click 本身并没有什么问题。

问题在于文件输入对话框不是“普通元素”。它有一些特定的安全限制 - 其中之一明显限制了您与其交互。

这可以通过以下 fiddle 来证明:https://jsfiddle.net/qhfwobpz/

您会发现直接在文件上传上发出点击是没有问题的。通过 ajax 回调执行此操作,您会看到回调被调用,但文件对话框永远不会显示。

This answer提供了有关“原因”的更多详细信息,归结为您可以从用户发出的事件打开对话框,但不能纯粹以编程方式打开对话框。

关于javascript - Ajax 调用成功后 JQuery 调用不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44910227/

相关文章:

javascript - 自上而下的汽车游戏中的漂移痕迹

javascript - 对ajax的递归调用导致内存泄漏?

javascript - 通过一个术语搜索整个表

javascript - 将 Ajax 页面保存到磁盘时出现差异

javascript - 在 Ajax 中从 PHP 中拆分数组

javascript - 使用 angularjs 清除输入字段

javascript - 无法使用 loopbackjs 验证 nodejs 中的第一个证书

java - Java提供时间戳吗???......DWR

javascript - React 中的尖括号和星号是什么意思?

javascript - 如何在 JavaScript 中克隆构造函数?