在jQuery Event中创建全局函数

时间:2013-03-05 21:18:28

标签: jquery global-variables uploadify

我有一个函数,它使用2种方法调用php脚本的POST事件。一个是在document.ready之后调用以返回Id。第二个我想发送第二个方法的Id,它将从该Id中找到所有附件。

第一种方法可行,但第二种方法不起作用。我可以从jquery函数事件创建一个全局变量,即

... function(data){
Record=Data; 
}

这是创建全局变量的方法吗?

我的代码:

function getAttachRecords(metodo, id){
    RegId = "";
    jQuery.ajax({
        type: "GET",
        async: true,
        url: "source/getAttchRecord.php",
        data:{method: metodo, id: id},
        cache: true,
        dataType: "html",
        contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
        success: function(data,textStatus,jqXHR){   

            if(metodo ="truncRecord"){  
                RegId = data;           
              $('#file_upload').uploadify({
                'formData'     : {
                            'timestamp' : '<?php echo time();?>',
                            'token'     : '<?php echo md5("unique_salt" . $timestamp);?>',
                            'registo'   : RegId             
                        },
                'uploader'  : 'source/uploadify/upload.php',
                'swf'      : 'source/uploadify/uploadify.swf',
                'script'    : 'source/uploadify/upload.php',
                'cancelImg' : 'source/uploadify/cancel.png',
                'folder'    : 'source/uploadify/uploads',
                'auto'      : true,
                'onSelect': function(){
                                    $("#table_content").slideUp();
                                },
                'onQueueComplete' : function() {
                                    $("#table_content").slideDown();
                                    getAttachRecords("getAttachRecords", RegId);  


                                }
              });
            }else{
                alert(data);
                $("table").find("#table_content").html(data);
            }
        }
    });
}

3 个答案:

答案 0 :(得分:3)

window应始终在范围内,因此只需添加您的变量:

//alert(bar); // `foo` is undefined up here

(function(){
  (function(){
    (function(){
      // some nested scope
      window.foo = 'bar';
    })();
  })();
})();

alert(foo); // `foo` now contains 'bar'

请注意,因为(尤其是ajax)它不能保证在您使用它时可用,所以最好还是检查它:

if (typeof foo !== 'undefined'){
  alert(foo);
}

但是,您也可以在该范围内定义它:

var foo;

(function(){
  (function(){
    (function(){
      // some nested scope
      foo = 'baz';
    })();
  })();
})();

alert(foo); // 'baz'

答案 1 :(得分:1)

只需在回调或其他包装函数之外进行初始定义:

var Record;

function getNewRecord () {
   Record = 'new data';
}

如果该值由回调设置,则无法确定何时更新此值,而不是在成功函数内或触发其他事件/回调。

答案 2 :(得分:0)

我找到了问题

  

if(metodo =“truncRecord”){

这个if语句应该是错误的:

  

if(metodo ==“truncRecord”){

更改后,一切正常