functionの全体がわからないですが、modorichをグローバル変数にして、こんな感じで渡せると思います。
$('selector').on("click", function(){ var modorich; $.get("hoge.php", {num: num}, function(xmlhttpreq){ modorich = なんか処理(xmlhttpreq); } ); $(this).animate({left: 0}, complete:function(){ var hensu = modorich; } ); } );
変数の代入がどうとか言うことではなく、Ajax が非同期で動作するから「値が渡らない」みたいになってるんです。
同期モードでリクエストを出す必要があります。
$('selector').on("click", function(){ var modorich; $.ajax({ url: "hoge.php", type: "GET", async: false, data: "num=" + num, success: function(xmlhttpreq){ modorich = なんか処理(xmlhttpreq); } } ); $(this).animate({left: 0}, complete:function(){ var hensu = modorich; } ); } );
関連するマニュアルは、これ。
http://api.jquery.com/jQuery.ajax/
ちなみに$.getのfunction内に入れる、というのはなしでお願いします。
どのような事情で、この制約が付いているのか分かりませんが、変数のスコープとか、処理のタイミングとかについてきちんと理解できるまでは、みんなと同じ書き方をするようにした方が良いですよ。
$('selector').on("click", function(){ var obj = $(this); $.get("hoge.php", {num: num}, function(xmlhttpreq){ var modorich = なんか処理(xmlhttpreq); obj.animate({left: 0}, complete:function(){ var hensu = modorich; }); } ); } );
▽3
●
Lhankor_Mhy ●100ポイント ベストアンサー |
Defferedオブジェクトを使うといいですよ。
↓サンプル
http://jsfiddle.net/aNaS3/