2012-02-28 21 views
1

私はajaxリクエストを送信した後に関数内に変数を設定したいと思います。 getjson関数外の関数警告が未定義で、値の内側にある理由は何ですか?解決策はありますか?jquery getjson関数で変数を設定できませんか?

function gettextlabel(txtvar){ 
    var v = ''; 
    $.getJSON('http://192.168.0.92/visuals/support/text_handler.php?txtvar=' + txtvar , function(data) { 
     v = data; 
     alert(v); 
    }); 
    alert(v); 
} 

答えて

1

デフォルトでは、jQueryはajax要求を非同期的に送信するためです。これは動作するはず

$.ajax({ 
    type: 'GET', 
    url: 'http://192.168.0.92/visuals/support/text_handler.php?txtvar=' + txtvar, 
    dataType: 'json', 
    success: function(data) { v = data; alert(v); }, 
    async: false 
}); 
+0

注:

あなたはそれが同じように、同期的に動作し、強制的にfalseにオプションasyncを設定することができます '非同期:false'をするまで、ブラウザをロックしますAJAX呼び出しが行われます。あなたが本当に必要な場合を除き**私はそれを使用しない**をお勧めします。このJSONに関連するすべてのものをコールバックに追加する必要があります。 –

+1

@Rocket Yep、そうです:)、コールバックに関連するコードを追加するのが最も普通の解決策です。 – xdazz

1

function gettextlabel(txtvar){ 
    var v = ''; 

    $.ajax({ 
     url: 'http://192.168.0.92/visuals/support/text_handler.php', 
     data: 'txtvar=' + txtvar, 
     type: 'GET', 
     dataType: 'json', 
     async: false, 
     success: function (data) { 
      v = data; 
      alert(v); 
     } 
    }); 

    alert(v); 
} 
+0

はい、ありがとう、これは私が探していたソリューションです。 – robind38

+0

注: 'async:false'は、AJAX呼び出しが完了するまでブラウザをロックします。あなたが本当に必要な場合を除き**私はそれを使用しない**をお勧めします。このJSONに関連するすべてのものをコールバックに追加する必要があります。 –

関連する問題