3

ajax,jquery 関数内でグローバル変数の値を取得しようとしています。

ここで私はこのコードを使用しています..

コード:

 <script type="text/javascript">

        var id;      
        function refreshRecord(id)
        {
           alert(id);
        }

     $(document).ready(function(){
     $("#refresh").click(function(){
         var fileId=id;
         alert("id is"+fileId);
         $.ajax({
            type:"post",
            url:"checkStatusAndNumRecs",
            data: {fileId:fileId},
            success:function(data){$("#div1").html(data);},
            error:function(data){$("#div1").html("It was a failure !!!");}
            });
            });
            }); 
</script>   

1つの送信ボタンをクリックすると、javascript関数を呼び出しています

<input type="radio" name="submit" value="submit" onclick="refreshRecord(this.value)">

ここで取得したいのは、スクリプトタグでグローバル変数 id を宣言したことです。ラジオボタンをクリックすると、onclick イベントが javascript 関数 refreshRecord(id) を 1 つのパラメーター「id」で呼び出します。

これで、id 値が何らかの値に設定されます。今、私はjquery関数内でその変数値を取得したいので、それを割り当てたい

var fileId = id;

しかし、上記のコードを実行してボタンをクリックすると。

アラートでは、最初の値が正しく表示されています (つまり、javascript からのアラートは正しく送信されています) が、ajax、jquery からのアラートは未定義または [オブジェクト オブジェクト] として表示されます。

どうすればこれを解決できますか??

4

3 に答える 3

7

関数に渡された値をグローバル変数に割り当てる必要がありますid。現在、あなたはそれを割り当てていません。関数のパラメーターidは関数に対してローカルであり、同じグローバル変数ではなく、グローバル変数idはそのままundefinedです。

以下のように変更するだけで、

    var id;      
    function refreshRecord(value)
    {
       id = value;
       alert(id);
    }
于 2013-09-25T12:43:21.250 に答える
2

グローバル変数内のフィールドからの値を配置する必要があります。

var id;      
function refreshRecord(inputValue)
{
    id = inputValue;
    alert(id);
}

これを行う場合:

function refreshRecord(id)
{
    alert(id);
}

関数スコープ内で名前が競合するため、refreshRecord 関数内では id グローバル変数にアクセスできません。理解するために範囲について読んでください:

http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/

于 2013-09-25T12:43:39.937 に答える