別のページのPHPファイルからオブジェクトを取得しようとしています。私は正しく動作しているjsonグラブを行うには、jQueryのajax関数を使用しています。問題は、そのオブジェクトを関数から返そうとするときです。Javascript - ネストした関数からアクセスできないローカルスコープオブジェクト
初めて(成功関数内から)オブジェクトをログに記録すると、コンソールでは正しくなりますが、関数getGantt()から返されたオブジェクトは「未定義」としてログに記録されます。
このオブジェクトを関数から取り除くにはどうすればよいですか?
マイコード:
function getGantt(requestNumber){
var ganttObject;
$.ajax({
type: "POST",
url: "get_gantt.php",
data: {request_number: requestNumber},
success: function(returnValue){
ganttObject = $.parseJSON(returnValue);
console.log(ganttObject); //this logs a correct object in the console
}
});
return ganttObject;
}
$(function(){ //document ready function
var requestNumber = $('#request_number').text();
var ganttObject = getGantt(requestNumber);
console.log(ganttObject); //this logs "undefined"
}); //end document ready function
あなたがいます。 ajaxコールバックがganttObjectを設定する前に変数を返します。 – kjy112
AJAXは非同期で実行されます。戻り値が発生した後のAJAXプロセスが完了するまで、getGantt関数は値を取得しません。 (a)成功関数で 'returnValue'を使用するようにプログラミングを再構成する必要があります(b)後でアクセス可能なグローバル/オブジェクト変数にreturnValueを格納します(トリガー/待機プロセスに関する問題を引き起こします) – Rudu
; stackoverflowは非常に高速です。 10分以内に3つの良い答え! –