所以,我用 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/