接收错误"Uncaught SyntaxError: Unexpected token "用Shin
Receiving error "Uncaught SyntaxError: Unexpected token <" with Shiny and rCharts
严格来说,这不是一个关于Javascript的问题,但我相信这是问题的根源。我有西雅图的犯罪数据集
Offense Date Longitude Latitude
3 Assault 2015-10-02 -122.3809 47.66796
5 Assault 2015-10-03 -122.3269 47.63436
6 Assault 2015-10-04 -122.3342 47.57665
7 Weapon 2015-04-12 -122.2984 47.71930
8 Assault 2015-06-30 -122.3044 47.60616
9 Burglary 2015-09-04 -122.2754 47.55392
,我正试图在Shiny与rCharts制作热图,类似于Ramnath的休斯顿犯罪数据热图演示,这将采取用户选择的日期范围和犯罪子集,并在传单地图上绘制热图。
我有以下ui。R:
library(shiny)
library(rCharts)
library(rjson)
shinyUI(fluidPage(
headerPanel("Crime in Seattle"),
sidebarPanel(
uiOutput("select.date.ran"),
uiOutput("select.crime")
),
mainPanel(chartOutput("my.map", "leaflet"),
tags$style('.leaflet {height: 500px;}'),
tags$head(tags$script(src="leaflet-heat.js")),
uiOutput('spd.map'))
))
其中leaflet-heat.js是在闪亮的应用程序目录的www文件夹(我已经尝试设置src="http://leaflet.github.io/Leaflet.heat/dist/leaflet-heat.js"并在标签$script中添加type="text/javascript",但我得到下面描述的相同错误)。这是我的服务员。R:
library(shiny)
library(rCharts)
library(rjson)
spd <- readRDS("data/spd.rds")
shinyServer(function(input, output, session) {
output$select.date.ran <- renderUI({
dateRangeInput("sel.date", "Choose date range:",
start = "2014/01/01", end = "2015/10/05",
separator = "to", format = "yyyy/mm/dd",
startview = "month", weekstart = 0,
language = "en")
})
output$select.crime <- renderUI({
checkboxGroupInput(inputId = "sel.crime", "Select crimes:",
choices = c("Theft", "Fraud", "Drugs/Alcohol",
"Weapon", "Assault", "Disturbance",
"Robbery", "Homicide", "Prostitution"),
selected = "Theft")
})
output$my.map <- renderMap({
my.map <- Leaflet$new()
my.map$setView(c(47.5982623,-122.3415519) ,12)
my.map$tileLayer(provider="Esri.WorldStreetMap")
my.map
})
output$spd.map <- renderUI({
spd.dat <- spd[spd$Offense %in% input$sel.crime &
(spd$Date >= input$sel.date[1] &
spd$Date <= input$sel.date[2]), c(3, 4)]
spd.json <- toJSONArray2(spd.dat, json = FALSE, names = FALSE)
tags$body(tags$script(HTML(sprintf("
<script>
var addressPoints = %s
var heat = L.heatLayer(addressPoints).addTo(map)
</script>", rjson::toJSON(spd.json)
))))
})
})
运行应用程序将显示地图和侧边栏元素显示正确,但没有热图显示。如果我在浏览器中运行它并检查开发人员工具Javascript控制台的输出,我将看到两个"Uncaught SyntaxError: Unexpected token <"错误。
长话短说:这些错误是什么意思,我怎么解决它们?我相信问题可以归结为这一点,但如果不是,是否有其他原因导致热图无法显示?
编辑:通过删除<script>
从HTML(sprintf(…错误变为"Uncaught TypeError: Cannot read property 'lat' of undefined"。我的第一个错误的原因是<script>
不应该在那里吗?并且是新的错误的原因,l.h etlayer没有正确地读取json作为后期/长坐标?
结果是有两个问题,当前两个问题解决后,又出现了第三个问题。
首先,<script>
在HTML(sprintf(…是不必要的。我认为这就是导致"Uncaught SyntaxError: Unexpected token <"错误的原因。
一旦我弄清楚了,json似乎没有被L.heatLayer视为lat/lon对。我不确定为什么这工作,但改变
spd.dat <- spd[spd$Offense %in% input$sel.crime &
(spd$Date >= input$sel.date[1] &
spd$Date <= input$sel.date[2]), c(3, 4)]
spd.json <- toJSONArray2(spd.dat, json = FALSE, names = FALSE)
spd.dat <- spd[spd$Offense %in% input$sel.crime &
(spd$Date >= input$sel.date[1] &
spd$Date <= input$sel.date[2]), ]
spd.arr <- toJSONArray2(spd.dat[c(3,4)], json = FALSE, names = FALSE)
。,选择lat和lon列在tJSONArray2,修复了这个问题。
最后,当热图出现时,我意识到地图状态的每次改变都会在现有热图的基础上重新绘制热图,以至于应用会在一段时间后冻结。这个答案提供了这个问题的解决方案。
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- 如何提取“;href"最近列表项中的属性值
- CKEditor如何允许href="javascript:void(0)"在小部件中
- Error "Uncaught SyntaxError: Unexpected identifier"