jQuery触发器点击无法通过AJAX成功

时间:2016-05-17 09:22:12

标签: javascript jquery html ajax

当我在表单上单击提交时,它会进行AJAX调用。如果返回值为success,我想打开文件上传浏览器以从系统上传文件。为此,我在success消息上使用jQuery的触发器单击。但它没有用。下面是AJAX调用的代码。

$.ajax({
  url: AppManager.defaults.contextPath,
  data: colMap,
  contentType: 'application/json',
  type: 'POST',
  success: function(data) {
    if (data.result == 'Success') {
      $('#continue-upload-input-box').trigger('click');
    } else {
      self.popupView.closePopup();
      notify.popup('Error Uploading').error(self.uploadFailureMessage);
    }
  },
  error: function(error) {
    console.log(error);
  }
});

这是写入文件上传代码的地方:

change: function($view) {
  var self = this;
  $('<form id="custom-upload" class="input-form-container" enctype="multipart/form-data"></form>').appendTo($view.find('.btn-wrap'));
  $view.find('.input-form-container').after('<input name="excelFile" type="file" id="continue-upload-input-box" style="display:none;">');
  $view.find('#continue-upload-input-box').off('change').on('change', function(event) {
    if (event.target.files.length === 1) {
      self.uploadCustomTemplate(new FormData($('#custom-upload')[0]));
      self.popupView.closePopup();
    }
  });
}

上述代码中可能存在什么问题?

6 个答案:

答案 0 :(得分:0)

使用

$(document).trigger

insted of

$('#continue-upload-input-box').trigger('click');

如果您使用文档,那么它将执行您的触发事件。如果您的id在触发单击时不在DOM中,则它将不会执行,因此您必须再次加载DOM

答案 1 :(得分:0)

你需要操作dom click事件,而不是jQuery click事件。

尝试: -

$('#continue-upload-input-box').get(0).click();

答案 2 :(得分:0)

使用on方法调用event.refer以下链接:

http://api.jquery.com/on/

答案 3 :(得分:0)

首先确保您的数据结果&#39;价值&#39;成功&#39;格式正确或返回哪个值然后使用此

$(&#34;#继续上传输入盒&#34)。触发器(&#34;单击&#34);

我认为你的代码是正确的,但这完全取决于你的其他jquery代码

答案 4 :(得分:0)

.trigger或多或少像点击一样。 在触发事件之前触发某个动作/事件,元素或对象必须在DOM中。 因此,如果您从JS加载表单然后将其附加到DOM中,则允许上传器显示的函数必须位于.load函数中,或者在ajax触发之前将其附加到DOM中更好。

http://api.jquery.com/trigger/

答案 5 :(得分:-1)

使用$('#continue-upload-input-box').click();。这应该足够了。