2017-07-04 102 views
0

我有一个Ajax调用,看起来像这样:JQuery的调用Ajax调用后不工作成功

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

一旦成功,我想执行与编号文件上传元素上点击启动文件选择对话,但把代码放在成功的功能上失败了。它适用于其他地方。 Ajax成功函数的范围有什么特别之处吗?我真的不知道这一点。

感谢

回答

1

没有任何关于从Ajax成功回调任何正常的元素(包括按钮)上发出click本身是有问题。

问题是文件输入对话框不是“正常元素”。它有一些特定的安全限制 - 其中一个明显限制了你与它的交互。

这表现在以下小提琴:https://jsfiddle.net/qhfwobpz/

你会看到,印发file-upload一个click直接工作没有问题。从ajax回调中执行它,你会看到回调被调用,但文件对话框从不显示。

This answer给出更详细的“为什么”,并把它归结为可以由用户发出事件打开对话框,但不是纯粹的编程。

+0

非常感谢您在回复中的时间和精力。这个线程很有意义。我试图在用户成功创建项目后自动生成文件输入框。但是我认为在项目成功的时候,我将不得不启用一个上传按钮,而之后必须单击这个按钮来显示文件输入框。再次感谢!! –