私は、テキストファイルから読み込まれたストレートテキストを返すようなコードを持っています(このインスタンスではJSONになりますが、必ずしも将来はそうでないかもしれません)。関数呼び出し。最終的に、そのテキストまたはそのセクションがウェブページ上に表示される。私は(ライン14を参照)は、単にデータの文字列を返す関数(readDoc)を作成しようとしていますが、私はグローバル変数のいずれかにresponseTextを渡すの問題が生じています...XMLHttpRequest関数呼び出しから 'responseText'を渡すには?
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>Not Working Example</title>
</head>
<body onload="myfunction()">
<div id="demo1" onclick="loadDoc()">demo1</div>
<div id="demo2" onclick="loadDoc()">demo2</div>
<div id="demo3" onclick="loadDoc()">demo3</div>
<script>
var dataString = "Test";
function loadDoc() {
var string = readDoc("TestData.json");
document.getElementById("demo2").innerHTML = string;
document.getElementById("demo3").innerHTML = dataString;
}
function readDoc(fileName) {
var fReader = new XMLHttpRequest();
fReader.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
dataString = this.responseText;
document.getElementById("demo1").innerHTML = this.responseText;
}
};
fReader.open("GET", fileName, true);
fReader.send();
}
</script>
</body>
</html>
をコードの次のビットを参照してください。または行14の呼び出しに戻る& 22行目。私は間違っていますか? 行24とは異なり、表示する前にデータを最初に(別の関数で)操作したいので、HTML要素に直接書き込む必要はありません。 「TestData.json」の(一時的に簡単な)の例では、私は別の順列の多くを試してみましたが、所望の結果を得るために管理することができないよう
{
"DataValue": 33
}
...です。そこにあるいくつかの「ジェノイド」は、「ああ、馬鹿馬鹿しくしたように見えるのは簡単だ」と言うだろうが、私は木の森を見ることができない。
'XMLHttpRequest'は非同期ですので、あなたのコードは' dataString'を更新しますが、非同期の性質を扱うようにコードを変更しない限り、これがプログラム的にいつ発生するのかを知る方法はありません。 –