2014-03-12 20 views
4

[交叉的R光泽谷歌组交 - 我等24小时]集成条纹结帐其中R闪亮应用

下面的代码将来自条纹渲染checkout按钮通常,如果我简单地将其保存为.html和开放它与Firefox:

<h1> this is a test </h1> 
<form action="" method="POST"> 
    <script 
    src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
    data-key="pk_test_qdunoptxl9KNXR5qk7WdtkVg" 
    data-amount="2000" 
    data-name="Demo Site" 
    data-description="2 widgets ($20.00)" 
    data-image="/128x128.png"> 
    </script> 
</form> 

但将其放置在A R闪亮应用像这样:

output$StripeCheckOut <- renderUI({ 
    div(class="span6", 
    div(HTML(' 
       <h1> this is a test </h1> 
       <form action="" method="POST"> 
        <script 
        src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
        data-key="pk_test_qdunoptxl9KNXR5qk7WdtkVg" 
        data-amount="2000" 
        data-name="Demo Site" 
        data-description="2 widgets ($20.00)" 
        data-image="/128x128.png"> 
       </script> 
       </form> 
      '))) 

将导致一个空白字段下的This is a Test文本。

似乎R Shiny不允许Javascript在页面被dom渲染后动态加载按钮。

如何在R Shiny应用程序中包含基本条纹结账按钮?

+0

在深入研究之前,您是否尝试迁移到集成Shiny的基于HTML的站点(vs使用来自原始Shiny应用程序的HTML UI元素函数调用)? http://rstudio.github.io/shiny/tutorial/#html-ui有关于如何做到这一点的信息,这使得集成更多动态内容变得更容易。 – hrbrmstr

+0

是的,将html放入'ui.r'中并没有改变任何东西。由于各种原因,我无法将此项目切换到纯粹的'index.html'基础! – JayCo

+0

(注释中的代码不起作用,请参阅“答案”,但它更多的是显示指定'script'元素的可能替代方式的一种方式) – hrbrmstr

回答

3

如果我包括:

HTML(' 
     <h1> this is a test </h1> 
     <form action="" method="POST"> 
      <script 
      src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
      data-key="pk_test_qdunoptxl9KNXR5qk7WdtkVg" 
      data-amount="2000" 
      data-name="Demo Site" 
      data-description="2 widgets ($20.00)" 
      data-image="/128x128.png"> 
      </script> 
     </form> 
     ') 

ui.r直接,它的作品 - 但把它放在一个有条件的面板内将不允许条纹JS加载。

相反,我用了一个HTML data-display-if条件:

<div align="center" data-display-if="output.Unpaid==True"> 
... 
</div> 

和一切工作!

这也是不错的,因为它允许您将条件绑定到Shiny output对象与有时可以更容易处理的对象。经过进一步的测试


更新

事实证明我的编辑不甚工作;在Stripe Checkout JS加载后,它会阻止我的Shiny App与页面上的其他JS元素进行交互。

好像有与条纹JS和内部闪亮JS一些冲突....


新更新

闪亮的最新版本(0.9.1)有解决了这个问题。 这似乎是js头和singletons,已在最新版本中更新的东西。

这不再是一个问题, 你现在可以直接用闪亮的条纹。

0

好吧,那也没有在评论中工作(本周评论中的代码运气不好)。您是否尝试用明确的tags$script呼叫包装它?

tags$script(src="https://checkout.stripe.com/checkout.js", 
      class="stripe-button", 
      "data-key"="pk_test_qdunoptxl9KNXR5qk7WdtkVg", 
      "data-amount"="2000", 
      "data-name"="Demo Site", 
      "data-description"="2 widgets ($20.00)", 
      "data-image"="/128x128.png") 

建立整个表格以查看它是否有帮助可能是有利的。

+0

这在'server.R'中不适用于我,但我没有在'ui.R'中测试它 – JayCo