为什么我的json数据不显示JsonView?

时间:2017-03-02 15:02:20

标签: javascript jquery json api getjson

我正在尝试使用JSONView显示此代码,但在从api回调函数内部调用数据时不会显示,但是当放置在回调之外时会显示非api数据。

// Call FreeGeoIP API to get browser IP address
$.getJSON('https://freegeoip.net/json/', function(data) {
  var ipaddress = data.ip;

  // Get browser language
  var language = window.navigator.language;

  // Get software
  var software = window.navigator.appVersion;
  var regExp = /\(([^)]+)\)/;
  software = regExp.exec(software)[1];

  // Add data to obj
  var obj = {
    'ipaddress': ipaddress,
    'language': language,
    'software': software
  };

  // Write obj to document
  $('body').html(JSON.stringify(obj));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

2 个答案:

答案 0 :(得分:0)

JSONView或任何其他json格式化程序检测您是否正在contentType加载的document(在http标头上设置)查看json。

由于您必须在client side(浏览器)上运行此代码,因此contentType设置为text/html

为了让插件正确格式化json,它必须知道你正在查看的是json,它是通过阅读contentType标题来实现的。 这就是为什么通过这个脚本获取json会将json显示为body属性中的文本,但不会被插件选中。

答案 1 :(得分:0)

如果

JSONView 扩展程序或Chrome浏览器中的任何其他扩展程序正在从本地系统访问文件,则需要访问文件URL的权限。 允许:-

  1. 访问chrome://extensions/
  2. 点击扩展卡上的Details按钮
  3. Switch ON Allow access to file URLs enter image description here