我正在尝试加载本地JSON文件,但它无法正常工作.这是我的JavaScript代码(使用jQuery:
var json = $.getJSON("test.json");
var data = eval("(" +json.responseText + ")");
document.write(data["a"]);
Run Code Online (Sandbox Code Playgroud)
test.json文件:
{"a" : "b", "c" : "d"}
Run Code Online (Sandbox Code Playgroud)
没有显示任何内容,Firebug告诉我数据未定义.在Firebug中,我可以看到json.responseText
并且它是好的和有效的,但是当我复制该行时很奇怪:
var data = eval("(" +json.responseText + ")");
Run Code Online (Sandbox Code Playgroud)
在Firebug的控制台中,它可以工作,我可以访问数据.
有人有解决方案吗?
我创建了一篇四开版博客文章,其中包含许多leaflet
在 R 中生成的地图。由于每个地图的数据都嵌入在 html 文件中,因此文件本身非常大。这会导致托管该文件的服务器出现问题。
我想让html文件变小。embed-resources: false
Quarto 中的YAML 选项意味着库(例如leaflet.js
)存储在单独的文件中。有帮助,但数据仍然存储在 html 中(每个地图一次)。我正在尝试从单独的文件加载数据本身。这是一个最小的文件示例qmd
:
---
format:
html:
embed-resources: false
---
```{r}
leaflet::leaflet(elementId = "map1") |>
leaflet::addTiles() |>
leaflet::addMarkers(lng = 174.768, lat = -36.852, popup = "The birthplace of R")
```
Run Code Online (Sandbox Code Playgroud)
当我quarto render
这样做时,它会创建一个 html 文件,该文件在浏览器中打开时显示地图。该文件包含以下地图数据<div>
:
<div class="leaflet html-widget html-fill-item-overflow-hidden html-fill-item" id="map1" style="width:100%;height:464px;"></div>
<script type="application/json" data-for="map1">{**json**}</script>
</div>
Run Code Online (Sandbox Code Playgroud)
我写的地方{**json**}
有一长串 json,其中包含地图坐标、CRS 和各种选项。
在我看来,我也许可以将 json 内容复制到文件中,然后更改标签<script>
以从该文件加载数据:
---
format:
html: …
Run Code Online (Sandbox Code Playgroud) javascript ×2
firebug ×1
jquery ×1
json ×1
leaflet ×1
local-files ×1
quarto ×1
r ×1
r-leaflet ×1