XHR の onreadystatechange 関数内にいる場合は簡単に実行できますがdocument.title = xhr.responseText
、関数が responseText を返すようにすると、XHR の外側のラッパーと等しい変数を設定して応答と等しくすることはできません。これを行う方法はありますか?
私のラッパー:
ajax = function(url, cb)
{
xhr = (window.XMLHttpRequest)
? new XMLHttpRequest()
: new ActiveXObject('Microsoft.XMLHTTP');
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4 && xhr.status == 200)
{
cb(xhr.responseText);
};
}
xhr.open('get', url, true);
xhr.send();
};
今、私が次のようなことをしたとします:
ajax('bacon.txt', function(_)
{
document.title = _;
}
それは絶対に完璧に機能します。実際、document.title は bacon.txt への呼び出しの responseText になります。ただし、この方法で実装しようとすると、次のようになります。
document.title = ajax('bacon.txt', function(_)
{
return _;
}
そのような運はありません。これがなぜなのか、誰かが明確にすることはできますか?};