0
私はAJAXの基礎を学んでおり、呼び出しの結果を変数に格納しようとしています。私は、このオブジェクトでdata.txtをファイルがあります:AJAXの結果を純粋なJavascriptに格納する
[
{ "id": "5688","name": " Jorge Luis Borges"},
{ "id": "5799","name": " Lewis Carroll"}
]
をそして私はこの呼び出しでそれを呼び出しています:
var object = "No object";
function requestFunction(url){
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.addEventListener("load", function() {
object = this.response;
});
request.send(null);
return object;
};
console.log(requestFunction("data.txt"));
私はなぜ知らないが、変数にresult = this.response
には影響しませんそこで私は結果を保存したい、コンソールは元の値:No object
を出力する。
理由は何ですか?
は編集:私はHow do I return the response from an asynchronous call?にfantastics応答を読んでいる、と私は、出力結果呼び出されたときに、コールバック含めるように機能を更新:
function requestFunction(url){
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.addEventListener("load", function() {
outputFunction(this.response); // The callback
});
request.send(null);
};
// This is the callback
function outputFunction(a){
console.log(a);
};
requestFunction("data.txt");
それが動作します。今、コールバック内で、私は変数に結果を格納し、関数の外で使用したいと思います。何かのように:
// This is the callback
var storedObject = "Empty";
function outputFunction(a){
storedObject = a;
return storedObject;
};
しかし、もう一度、それは動作しません。 ¿前のコードと同じ理由ですか?
ありません非同期関数ではありません。この関数は非同期に呼び出されます... –
はい、それは誤解を招くことがあります。編集しました – marvel308
[非同期呼び出しからの応答を返すにはどうすればよいですか?](https://stackoverflow.com/questions/14220321/how ... – Nikita