getJSONを使用して自分のWebサイトからJSONをリクエストします。それは素晴らしい作品が、私は別の変数に出力を保存する必要があり、このように:jQuery getJSON結果を変数に保存
var myjson= $.getJSON("http://127.0.0.1:8080/horizon-update", function(json) {
});
私はmyjson
に結果を保存する必要がありますが、この構文が正しくないようです。何か案は?
getJSONを使用して自分のWebサイトからJSONをリクエストします。それは素晴らしい作品が、私は別の変数に出力を保存する必要があり、このように:jQuery getJSON結果を変数に保存
var myjson= $.getJSON("http://127.0.0.1:8080/horizon-update", function(json) {
});
私はmyjson
に結果を保存する必要がありますが、この構文が正しくないようです。何か案は?
getJSON
を呼び出すと、応答後に値を取得することはできません。
var myjson;
$.getJSON("http://127.0.0.1:8080/horizon-update", function(json){
myjson = json;
});
この問題は、タイミング問題のため次の行で 'var myjson'が利用できないということです。 –
@JanDvorakはい、要求は非同期に実行されます。続行するには 'json'データが必要な場合は、' myjson'変数を設定した後に他のコードを呼び出す必要があります。ソリューションとして、それはRaviからの 'callbackFuncWithData'のようなものでも、別の関数の呼び出しでもかまいません。 – webdeveloper
これを行うと、myjsonを外に宣言しておく理由はありません。それを引数としてコールバックに渡すだけです。 –
$ .getJSonは、コールバック関数にコールバック関数またはコールバック関数を渡して、グローバル変数に割り当てます。
var globalJsonVar;
$.getJSON("http://127.0.0.1:8080/horizon-update", function(json){
//do some thing with json or assign global variable to incoming json.
globalJsonVar=json;
});
IMOは、コールバック関数を呼び出すことをお勧めします。目に優しい、読みやすさの面。
$.getJSON("http://127.0.0.1:8080/horizon-update", callbackFuncWithData);
function callbackFuncWithData(data)
{
// do some thing with data
}
私は最初の解決策が動作するとは思わない。 .getJSONは非同期なので、外部変数に到達することはできません。あなたがしなければならないことは、低レベルのajaxで非同期:falseを設定することです。 – lngs
@lngs:いいえ、動作します。コールバック関数は* closure *であり、より高いスコープで定義されたすべての変数にアクセスできます。変数にアクセスするときは*注意*する必要があります。つまり、 '$ .getJSON'を呼び出した直後に変数にアクセスすることはできません。その場合は、実際に同期要求を行う必要があります。 –
それでは、ajaxコールがいつ終了し、応答データがどれくらい大きいかをどのように知ることができますか?それでもコールバック関数を使用する必要があります。 – lngs
単に 'VARのmyjson =' – Cristy
は、[関数からAJAX呼び出しからの応答を返すには?]を見てください(http://stackoverflow.com/questions/14220321/how-to-を削除ajax-call-from-a-functionからの応答を返します) - 少なくとも、あなたは問題の解決方法を正しく理解する必要があります。構文btwは有効ですが、あなたが望むことはしません。 –