私はこれを持っています
var myapp;
function Menu($scope){
$.ajax({
url: "/user.php",
type: "POST",
success: function(data){
}
});
}
関数スコープ外のデータを使用するにはどうすればよいですか。
ありがとう
私はこれを持っています
var myapp;
function Menu($scope){
$.ajax({
url: "/user.php",
type: "POST",
success: function(data){
}
});
}
関数スコープ外のデータを使用するにはどうすればよいですか。
ありがとう
ajax 操作が非同期であるため、問題が発生しています。これは、$.ajax
が呼び出された後、応答がいつ到着するかを正確に制御できないことを意味します。その間、コードは正常に実行され続けます。応答が到着する前に使用しようとすると、応答は空になります。
フレームワークがあなたのMenu
関数を呼び出すとコメントで言っているので、どのパラメーターがそれに渡されるかを制御できないと思います。この場合、success
コールバック内のデータのみを使用する必要があります。
function Menu($scope){
$.ajax({
url: "/user.php",
type: "POST",
success: function(data){
// USE data HERE
}
});
}
の呼び出し方法を変更できる場合Menu
は、それにコールバック関数を渡して、結果を操作させることができます。
function Menu($scope, ajaxCallback){
$.ajax({
url: "/user.php",
type: "POST",
success: ajaxCallback
});
}
// Define the callback where you will use the data
function processData(data) {
// USE data HERE
}
// Call Menu passing the callback
Menu(whateverScopeIs, processData);
必要なスコープで変数を作成し、その変数にデータを保存できます。または、関数を呼び出してそのデータを渡すこともできます。例えば:
function alertData(data){
alert(data); // I can use the data here now!
}
var foo;
$.ajax({
url: "/user.php",
type: "POST",
success: function(data){
alertData(data);
}
});
}
グローバル変数を作成し、それにデータを割り当ててから、グローバル変数を使用します。
例えば
var foo;
function bar(baz) {
foo = baz;
}
bar("test");
alert(foo);