Jquery调用函数外的变量

时间:2014-03-31 21:31:36

标签: jquery function variables alert

我有一个定义变量的函数,如果我在函数内部调用它可以正常工作。当我尝试在功能之外使用警报时,它不起作用。我做错了什么和/或我需要做什么来调用/警告函数之外的函数。谢谢。

$(function() {
    $("#MyForm").submit(function(){
        $(':input.File').each(function() {  
            $(this).upload(
                'filephp.php', 
                function(success){
                    var fmsg = success;
                    if(fmsg == "E") {var T = 'left';}

                    }, 
                $('#prog')
            )
            alert(T);

        }); 
        return false            
    })

})

正如你所看到我试图设置一个变量“T”然后在函数之外提醒它。我需要使用函数外部的变量来做更多的表单处理。感谢。

2 个答案:

答案 0 :(得分:2)

变量T超出范围。首先在上传调用之外定义它,然后在上传完成后在回调函数中调用alert。

修改

   var T = '';
   ...
   $(this).upload(
      'filephp.php', 
      function(success){
         var fmsg = success;
         if(fmsg == "E") {
             T = 'left';
         }
      }, 
       $('#prog')
    );
    alert(T);
    ...

此示例的唯一问题是警报值''不'左',因为在上传完成时以及在警报之后调用回调函数。因此,您必须在成功回调中调用它以获得正确的值。

答案 1 :(得分:0)

基本上你必须在你的函数之前将“T”设置为变量,然后在函数中用T =“lol hai”重新定义它。

*编辑 - 所以它有一些问题: http://jsfiddle.net/vAx6L/2/

就像使用变量“T”一样,您需要在函数外部设置“fmsg”空白的变量。

在Jquery中,您可以通过将其设置为变量来创建函数,请参阅以下链接: http://learn.jquery.com/javascript-101/functions/

有一些额外的不必要的字符检查控制台是否有关于此的错误,小提示显示您的示例的缩减版本,因为显然没有您的上传库/插件。

var T;
var fmsg;
var newFunction = function(){
    fmsg = "E";
    if(fmsg == "E"){
        T = 'left';
    }
    alert(T);
}; // no need for a closing ")" here
newFunction(); // This actually calls the function, should be in your document ready/ document load