javascript - 变量不重新定义jquery

标签 javascript jquery

所以,我用 jQuery 创建了我的第一个函数。现在我在函数中重新定义变量时遇到问题。

fileValid 没有定义我需要的内容。正如您在我的 ajax 调用中看到的,if(result=="true"){fileValid = false; }其他{ fileValid = true;}。这里 fileValid 没有被重新定义并保持默认值。

这是我的代码:

(function( $ ) {
    $.fn.checkFile = function(file){

        var fileValid = true;

        var form_data = new FormData();
        form_data.append("op", "235353")
        form_data.append("file", file);

        $.ajax({
          url:"ajax/scripts/message.php?w=<?php echo $workspace_id?>",
          type:"POST",
          data:form_data,
          contentType: false,
          processData:false,
          success:function(data){
              var result = $.trim(data);
              if(result=="true"){fileValid = false; }else{ fileValid = true;}
              }
          });   

        return fileValid;    
    }
}( jQuery ));

最佳答案

Ajax 是异步的,因此您不能像那样返回其结果。使用回调:

$.fn.checkFile = function(file, complete){
...
success: function(data){
    var result = $.trim(data);
    complete(result=="true" ? true : false);
}); 

或者甚至:

$.fn.checkFile = function(file, valid, invalid){
...
success: function(data){
    var result = $.trim(data);
    if (result=="true") { valid(); } else { invalid(); }
}); 

现在,如果您有一个全局变量fileValid,您可以像这样重新定义它:

$(...).checkFile("myFile", function() {
    fileValid = true;
});

关于javascript - 变量不重新定义jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34905512/

相关文章:

javascript - Node JS 和 Coinbase

javascript - ReactJS 中的多个上下文

javascript - 平稳缓慢地向下滑动 table 行

javascript - 将 jQuery Mobile CSS 合并到 JavaScript 输出元素中?

jquery-plugins - JQuery 下推表单

javascript - 使用 NodeJS 解析 HTML 文件

javascript - MathJax - 加载指示器并隐藏 div 直到加载方程

javascript - 如何在 jquery.click 中捕获 "open in a new tab"点击

jquery - 需要帮助构建 jQuery 查询

javascript - 对 div 中的可见元素进行单独编号