0

2 つのメソッドを持つ php スクリプトの POST イベントを呼び出す関数があります。document.ready1 つはId を返すためのcall afterです。2番目は、そのIDからすべてのアタッチを見つける2番目のメソッドにそのIDを送信したいです。

最初の方法は機能しますが、2 番目の方法は機能しません。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);
            }
        }
    });
}
4

3 に答える 3

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'
于 2013-03-05T21:21:11.067 に答える
1

コールバックまたはその他のラッピング関数の外で最初に定義するだけです。

var Record;

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

つまり、値がコールバックによって設定されている場合、成功関数内から、または他のイベント/コールバックをトリガーする以外に、この値がいつ更新されるかを判断する方法はありません。

于 2013-03-05T21:23:11.603 に答える
0

私は問題を見つけました

if(metodo="truncRecord"){

このifステートメントは間違っています:

if(metodo =="truncRecord"){

変更後、すべて正常に機能しました

于 2013-03-06T00:47:20.967 に答える