如何从XMLHttpRequest函数调用传递'responseText'?

时间:2017-05-18 02:43:26

标签: javascript ajax

我有代码,我想返回直接文本,已从文本文件中读取(在本例中恰好是JSON,但可能并不总是将来),我只想将结果传回去来自函数调用。文本或其部分最终将显示在网页上。见下一段代码...

<!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>

我正在尝试创建一个只返回数据字符串的函数(readDoc)(参见第14行),但是我遇到了将responseText传递给全局变量或者返回到第14行和第14行调用的结果的问题。第22行。我做错了什么? 与第24行不同,我不想直接写入HTML元素,因为我想在显示之前首先操作数据(在单独的函数中)。 “TestData.json”的(暂时简单的)示例是......

{
    "DataValue": 33
}

我尝试过很多不同的排列,但似乎无法获得理想的结果。有些'genioid'会说“啊,很容易看起来这个白痴做错了。”但是我看不到树林里的树林。

1 个答案:

答案 0 :(得分:0)

readDoc真的得到了结果吗?你检查结果了吗?你能检查一下console.log或alert吗?

我认为问题是您需要隐藏类型输入结果,但最好先确保在readDoc中获得所需的结果。