首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >闪亮:使用shinyjs获取cookie数据

闪亮:使用shinyjs获取cookie数据
EN

Stack Overflow用户
提问于 2016-01-11 09:00:20
回答 1查看 3.1K关注 0票数 7

我想使用shinyjs从我闪亮的应用程序中获取cookie数据。我已经创建了一个cookie,"samplecookie=testval";我希望能够检索samplecookie的值。我使用下面的javascript函数(其中传递cookieName并返回相应的值)。

代码语言:javascript
复制
function fetchCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(";");
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==" ") c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return      c.substring(nameEQ.length,c.length);
}   
return "No such cookie";  

下面是这个闪亮的应用程序中的javascript代码

代码语言:javascript
复制
jsCode<-'shinyjs.tstfunc=
    function (name) {
var nameEQ = name + "=";
var ca = document.cookie.split(";");
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==" ") c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return      c.substring(nameEQ.length,c.length);
return "No such cookie";
}   
}' 

ui <- shinyUI(fluidPage(mainPanel(
  useShinyjs(),
  extendShinyjs(text = jsCode)
)))

server <- function(input, output)
  {
    observe({
    x=js$tstfunc("samplecookie")
    print(x)
    })
  }

shinyApp(ui=ui, server=server)

我希望当我将"samplecookie“作为参数传递给tstfunc()函数时,它应该在控制台上打印"testval”。但是每次我总是得到一个空值。有人能帮我理解我做错了什么吗?感谢你的帮助。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-11 18:02:12

我是shinyjs的作者。您不能这样使用它将值从JS传递到R,从JS传递值到R的唯一方法是使用输入。在JavaScript中,您必须调用Shiny.onInputChange()函数,而在R中,您需要添加一个观察/反应语句,该语句侦听正在更改的输入。

阅读此页面,了解如何将值从JS传递到R

您提供的代码有点奇怪,难以阅读,因此这里有一个简单的示例来说明如何做到这一点。这段代码只要求JavaScript将当前时间传递给R,这很简单,但它展示了如何做到这一点

代码语言:javascript
复制
library(shiny)
library(shinyjs)

jsCode <- 'shinyjs.gettime = function(params) {
  var time = Date();
  Shiny.onInputChange("jstime", time);
}' 

ui <- fluidPage(
  useShinyjs(),
  extendShinyjs(text = jsCode, functions = "gettime")
)

server <- function(input, output) {
  js$gettime()

  observe({
    cat(input$jstime)
  })
}

shinyApp(ui = ui, server = server)
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34717489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档