いいえ; $.post
は非同期で実行されるため、を呼び出すconsole.log
と、AJAXリクエストはまだ実行されており、まだ応答がありません。これがコールバック関数の目的です。リクエストの完了後に実行されるコードを提供することです。コールバック関数に移動console.log
すると、機能するはずです。
$.post('do.php', { OP: "news_search", category: cat_id },
function(data_response){
var response = data_response; //I need to access this variable outside of $.post()
console.log(response);
}
}, "json");
更新:応答データをグローバルに利用できるようにする場合は、次のようにグローバルスコープで変数を宣言できます。
var response = null;
$.post('do.php', { OP: "news_search", category: cat_id },
function(data_response){
response = data_response;
console.log(response);
}
}, "json");
response
もちろん、実際に値が入力されている
ことを確認できる唯一のコンテキストは$.post
、行の後に提供されるコールバック関数にありますresponse = data_response;
。スクリプトの他の段階で使用する場合は、最初にその値を確認する必要があります。このようなもの:
if (response !== null)
{
console.log(response);
}
$.post
呼び出しの直後にこのコードを配置すると、このコードは何も実行されないことに注意してください。これは、POSTリクエストが終了した後、他の非同期コールバック(おそらく、ある種のUIインタラクションイベント)で実行された場合にのみ役立ちます。