【问题标题】:How to send data to server on click of button in shiny如何通过单击闪亮的按钮将数据发送到服务器
【发布时间】:2013-12-16 22:47:31
【问题描述】:

我试图在按钮的提交事件中将一些数据发布到闪亮的服务器。我已经完成了输入绑定,但我无法在我的 html 和服务器代码所在的服务器上接收数据。

<html>
<script>
   var submit_binding = new Shiny.InputBinding();
   $.extend(submit_binding, {
        find: function(scope) {
             return $(scope).find("#submit");
         },

       getValue: function(el) {
           // Get the row and cell number of the selected td.
           //var month 
           //var year 
           var result = ['2', '2013'];
           return result;
        },

       subscribe: function(el, callback) {
           $(el).on("click.submit_binding", function(e) {
               callback();
           });
       },

       unsubscribe: function(el) {
            $(el).off(".submit_binding");
       }

       });

     Shiny.inputBindings.register(submit_binding);
</script>
    <body>
    <div>
        <select id="mn" name="mn">
            <option value="1">1</option>
            <option value="2">2</option>
        </select> 
        <select id="yr" name="yr">
            <option value="2012">2012</option>
            <option value="2013">2013</option>
        </select> 
        <button id="submit">Run</button>
    </div>
    <div>
         <div  id="mean" class="d3-plot-output"></div>
    </div>
    </body>
</html>

我的服务器代码:

shinyServer(function(input, output) {
    month <- reactive({
        switch(input$mn, '1'=1, '2'=2,1)
    })
    year <- reactive({
        switch(input$yr, '2012'=2012, '2013'=2013,2012)
    })

    testwrite <- function(){
         a = c[1,2,3]       
         write.csv(a, file="test_binding.csv");
         return (a)
}

    output$mean <- reactive(        
        testwrite()
    )
 })

我无法弄清楚我在这里缺少什么。

【问题讨论】:

  • 你到底想在这里做什么?我认为您不需要绑定来在服务器和客户端之间进行通信。如果你澄清你想要做什么,有人可以提供帮助。
  • 我有一个 html 页面,其中有一个选择框和提交按钮。在做出选择并点击提交按钮后,我会将选择框值发送到服务器。服务器将运行一些功能,并将结果发送回客户端。然后客户端将使用 d3js 绘制一些图表。
  • Shiny 已经为此目的提供了一个提交按钮。这不足以满足您的目的吗?
  • 我没有使用闪亮的 ui。我正在使用自定义 HTML。
  • 您仍然可以通过添加正确的类来使用现有的绑定。所以对于提交按钮,你添加type=submit

标签: r shiny


【解决方案1】:

我将我的服务器代码更改如下以使其正常工作

shinyServer(function(input, output, session) {
    values <- reactiveValues();
    values$lastAction <- NULL;
    observe({    
        values$lastAction <- input$submit;
    })    

    testwrite <- function(){
         a = c[1,2,3]       
         write.csv(a, file="test_binding.csv");
         return (a)
    }

    output$mean <- function(){        
        if(!is.null(values$lastAction)){
            testwrite()                
        }
    }
})

【讨论】:

    猜你喜欢
    • 2020-09-14
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 2022-11-04
    • 2017-12-12
    • 1970-01-01
    相关资源
    最近更新 更多