最近、MooToolsを使用して、いくつかの単純なAJAX関数に取り組んできました。私の問題は、直後のコードである:Javascript変数のスコープ内で宣言されていない
function changePage(id, url) {
var c = false,
r = null;
for (i = 0; i < history.length; i++) {
if(history[i]['id'] === id) {
console.log('cached');
r = history[i].response;
c = true;
}
}
if(!c) {
makeRequest(url, function(response) {
r = response;
history.push({id: id, response: response});
});
}
changeBackground('_background', {color: r.bgColor, image: r.bgImage});
lightboxContents(generateArticle(r.article.id, r.article.title, r.article.body, r.article.timestamp));
return true;
}
をここでコードは(それはクリックを経由してルーティングされています)が実行されるたびに、私はエラーを送ったんだ「『R』に定義されていません」 - 声明、その私の意見では、ひどく間違っています。
私は、この問題に関して、 'window'オブジェクトを使って 'r'をグローバル変数に置き換えようとしました - 同じ問題です。
私はこの単純な問題に困惑し、新鮮な目の誰かが私の誤りを指摘できるならば、世界に感謝します。
ありがとうございました! makeRequest
は、そのコールバック関数は、要求が完了するとだけ呼び出されることを意味し、非同期AJAX呼び出しているように見えるので ティモン
'console.log(r)'を実行した場合はどうなりますか? 'r'のような音は、(おそらく何らかのエラーのために)その値を割り当てられていません。 – Mrchief