gpt4 book ai didi

r - Shiny:使用shinyjs来获取cookie数据

转载 作者:行者123 更新时间:2023-12-04 13:22:31 24 4
gpt4 key购买 nike

我想使用Shinyjs从我的Shiny应用程序中获取Cookie数据。我创建了一个cookie,“samplecookie = testval”;并且我希望能够检索samplecookie的值。我使用下面的javascript函数(在其中传递cookieName并返回相应的值)。

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";

以下是 Shiny 的应用程序中的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”。但是每次我不断返回NULL值时。有人可以帮助我了解我在做什么错吗?感谢任何帮助。谢谢。

最佳答案

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

Read this page to learn about passing values from JS to R

您提供的代码有点怪异且难以阅读,因此这是一个简单的示例。这段代码只是要求JavaScript将当前时间传递给R,这很简单,但是它显示了如何执行此操作

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)

关于r - Shiny:使用shinyjs来获取cookie数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34717489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com