我想使用shinyjs从我的Shiny应用程序中获取cookie数据。我已经创建了一个名为"samplecookie=testval"的cookie,并且我希望能够检索samplecookie的值。我使用下面的javascript函数(其中我传递cookieName,它返回相应的值)。
以下是Shiny应用程序中的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";
以下是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
以支持以随意方式返回参数?这确实非常方便。 - AdamB