【问题标题】:Unable to assign JSON value to variable in HTML无法将 JSON 值分配给 HTML 中的变量
【发布时间】:2015-06-19 13:33:43
【问题描述】:

我创建了一个带有变量的 JSON 文件。但我无法将值分配给 JSON 中的变量。

我的 HTML 文件是:--

<div class="col-xs-9 text-right">
 <div class="huge">
    <p id="demo"></p>
 </div>
 <div>Total</div>
</div>

我的 Javascript 是:--

<script>
      var text = 'http://localhost:8080/SampleGUI/total.txt';
      var obj = JSON.parse('text');
      document.getElementById("demo").innerHTML = obj.total; 

</script> 

我的 JSON 是:--

  {
     "text": {
      "total":"19838"
  }

}

我的 HTML 变量分配不断收到无效字符错误。

你能帮帮我吗?

问候。

【问题讨论】:

标签: css json html twitter-bootstrap


【解决方案1】:

不应该是:

 document.getElementById("demo").innerHTML = obj.text.total; 

【讨论】:

  • 页面加载失败 var obj = JSON.parse('text');
【解决方案2】:

当你说

var obj = JSON.parse('text');

您正在解析字符串 "text",它不是有效的 JSON。

例如:

$ node
> JSON.parse("text")
SyntaxError: Unexpected token

也许您的意思是解析名为 text 的变量中的 JSON 字符串,因此请删除引号。

这应该会让你朝着正确的方向前进:

$ node
> var text = '{ "text": { "total": "19838" } }'
undefined
> JSON.parse(text).text.total
'19838'

【讨论】:

  • 我尝试查看各种选项。但由于我是 HTML 和 JSON 新手,我无法修复它。
  • 我试过了,但仍然失败并出现同样的错误。 var text = 'localhost:8080/SampleGUI/total.txt'; var obj = JSON.parse(text).text.total; document.getElementById("demo").innerHTML = obj.text.total;
  • @RayToal 当然,他不应该这样做JSON.parse("text")。但更根本的问题是,即使他将其更改为JSON.parse(text)text 也不会成为服务器所需的对象,因为他不知道 AJAX 是如何工作的。
【解决方案3】:

由于您尝试获取文件,因此您可能希望使用 XMLHttpRequest 进行检索,所以这样的事情可以做到 "untested:

var xmlhttp = new XMLHttpRequest();
var url = "http://localhost:8080/SampleGUI/total.txt";

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        console.log("response",xmlhttp.responseText);
        var obj = JSON.parse(xmlhttp.responseText);
        document.getElementById("demo").innerHTML = obj.text.total; 
    }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();

如果您使用类似这样的 jquery

$.getJSON("http://localhost:8080/SampleGUI/total.txt", function(data) {

    $("#demo").text = data.text.total; 
});

我附上了一个工作的 jsfiddle http://jsfiddle.net/nk0ynou1/

【讨论】:

  • 我们在哪里定义 jquery 中的变量 obj 。是否应该定义为全局变量?
  • 谢谢卢克。我不再出错了。但是 HTML 仍然没有显示 demo 的值。它是空白的。
  • 您的 json 文件的确切内容是什么?为了确保您收到正确的数据,我将添加 console.log("response",xmlhttp.responseText);所以你可以看到 JSON.parse 解析了什么
  • 我的确切 JSON 内容是 { "text": { "total":"19838" } } 我正在尝试将值存储在变量 demo 中,以便可以在 html 中打印它。
  • 在这里我上传了一个 jsfiddler 版本的工作 jsfiddle.net/lukesUbuntu/nk0ynou1/3
猜你喜欢
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
相关资源
最近更新 更多