变量没有重新定义jquery

时间:2016-01-20 16:36:17

标签: javascript jquery

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

fileValid没有定义我需要它。正如您在我的ajax调用中所看到的,if(result=="true"){fileValid = false; }else{ 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 ));

1 个答案:

答案 0 :(得分:3)

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;
});