所以,我在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 ));
答案 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;
});