【发布时间】: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。