javascript - 如何使用从异步函数接收的数据在 Ajax 调用中返回 bool 值

标签 javascript jquery ajax

我正在尝试在 beforeSend 处进行数据验证。此数据验证应返回 true 或 false。从异步 filereader.onloadend

接收数据

如果为 false,则该函数不应继续。但使用下面的代码,它实际上会进行POST

var checkValidity = function(data, callback){
    const filereader = new FileReader()
    filereader.onloadend = function(e) {
        callback(e); // I want to do validation on data received here
    }
};

$('#imageField').on('change', function(e) {
    var formData = new FormData();

    $.ajax({
        data: formData,
        type: 'POST',
        beforeSend: function() {
            var data = formData.getAll('inputField');
            checkValidity(data, function(e){
                // if console.log(e) here, actually return expected value

                // I'm trying to return false/true here
                e ? return true : return false
            });
        }
    });
});

最佳答案

验证成功后才调用ajax

var checkValidity = function(data, callback) {
  const filereader = new FileReader()
  filereader.onloadend = function(e) {
    callback(e); // I want to do validation on data received here
  }
};

$('#imageField').on('change', function(e) {
  var formData = new FormData();

  var data = formData.getAll('inputField');
  checkValidity(data, function(e) {
    e ?
      return true: return false
  });


  If(conditionToCheckIfValid) {
    $.ajax({
      data: formData,
      type: 'POST',
      // rest of the code 
    });
  }
});

关于javascript - 如何使用从异步函数接收的数据在 Ajax 调用中返回 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48256696/

相关文章:

javascript - 具有不对称增量的循环

javascript - 缩短 50 个字符后的文本,但仅在当前单词之后

jquery - PrimeFaces 中数据表内的按钮背景颜色/文本更改

jquery - 为什么这个 jquery 代码不能在黑莓上运行?

javascript - 我的 API URL 正确且 HTTP(S) 正确,但 Console.log() 出现空白?为什么?

javascript - 向后迭代数组错误

javascript - 如果组件的 DOM 元素的宽度发生变化,如何调用函数? ( Angular 4)

jquery - 使用 jQuery 将 2 个 DIV(登录链接和购物车)移动到最后一个列表项

jquery - jqGrid 明确搜索条件

javascript - 如何在不等待ajax响应的情况下进行计数统计