如何在点击闪亮的按钮时将数据发送到服务器

时间:2013-12-16 22:47:31

标签: r shiny

我试图在按钮的提交事件中将一些数据发布到闪亮的服务器上。我已经完成了输入绑定,但我无法接收服务器上的数据我的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()
    )
 })

我无法弄清楚我在这里失踪了什么。

1 个答案:

答案 0 :(得分: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()                
        }
    }
})