GVKun编程网logo

javascript – Braintree Drop-In UI需要重新加载才能正常工作(js页面重新加载一次)

10

在这篇文章中,我们将为您详细介绍javascript–BraintreeDrop-InUI需要重新加载才能正常工作的内容,并且讨论关于js页面重新加载一次的相关问题。此外,我们还会涉及一些关于AJAX

在这篇文章中,我们将为您详细介绍javascript – Braintree Drop-In UI需要重新加载才能正常工作的内容,并且讨论关于js页面重新加载一次的相关问题。此外,我们还会涉及一些关于AJAX返回的JavaScript无法正常工作。如何使用JavaScript?、AJAX返回的JavaScript无法正常工作如何使用JavaScript?、Bootstrap javascript或popover无法正常工作、grails – Controller @Mixin在重新编译运行应用程序后才能正常工作的知识,以帮助您更全面地了解这个主题。

本文目录一览:

javascript – Braintree Drop-In UI需要重新加载才能正常工作(js页面重新加载一次)

javascript – Braintree Drop-In UI需要重新加载才能正常工作(js页面重新加载一次)

我刚刚开始使用Braintree插件用户界面.客户端是javascript,服务器端是ruby on rails.

我的系统现在非常简单.向用户提供与其相关的发票列表.当发票尚未付款时,他们可以点击“付款”并转到包含Braintree Drop-In UI的新页面.我的问题是:当用户进入“付费”页面时,不会显示插入式用户界面.如果用户重新加载页面,则会显示插入式UI.

为什么?

这是一些相关的代码.这是非常香草,还没有完成 – 只是粗暴对待.

来自发票/ index.html.erb

<td>
  <% if invoice.paid %>
    <%= 'Paid' %>
  <% else %>
    <%= link_to 'Pay', payment_path(invoice.id) %>
  <% end %>
</td>

来自payments_controller:

class PaymentsController < ApplicationController
    skip_before_action :verify_authenticity_token
    before_action :set_invoice, only: [:pay, :checkout]

  def pay
      Braintree::Configuration.environment = :sandBox
      Braintree::Configuration.merchant_id = 'merchant id'
      Braintree::Configuration.public_key = 'public key'
      Braintree::Configuration.private_key = 'private key'
      gon.client_token = Braintree::ClientToken.generate()
  end

    def checkout
        nonce = params[:payment_method_nonce]
        result = Braintree::Transaction.sale :amount => @invoice.amount, :payment_method_nonce => "nonce-from-the-client"
        if result.success?
            message='Payment processed successfully. Thank you!'
            @invoice.paid=true
            @invoice.save
        else
            message='Unable to process payment. Reason = ' + result.message
        end
        redirect_to invoices_path, notice: message
    end

    private
        def set_invoice
            @invoice = Invoice.find(params[:id])
        end
end

pay.html.erb:

<h1>Payments</h1>

<div>
    <p>Invoice #: <%= @invoice.id %></p>
    <p>Date: <%= @invoice.date %> </p>
    <p>Description: <%= @invoice.description %> </p>
    <p>Amount: <%= @invoice.amount %> </p>
</div>

<divhttps://www.jb51.cc/tag/Box/" target="_blank">Box glassy-bg small-10 small-centered medium-8 large-6 columns">
  <h2>New Transaction</h2>
  <%= form_tag payments_checkout_path do%>
      <%= hidden_field_tag 'id', @invoice.id %>
      <p>Please enter your payment details:</p>
      <div id="dropin"></div>
      <%=submit_tag "Pay #{@invoice.amount}$", class: "button mt1" %>
  <%end%>
</div>

和layouts / application.html.erb

<!DOCTYPE html>
<html>
    <head>
          <title>Actionable Software</title>
              <%= include_gon %>
              <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
              <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
              <%= csrf_Meta_tags %>
              <script src="https://js.braintreegateway.com/v2/braintree.js"></script>


      <Meta name='viewport' content='width=device-width, initial-scale=1.0'>
    </head>
    <body>
        <%= render 'layouts/header' %>

        <div>
            <% flash.each do |name, msg| %>
                <%= content_tag(:div, msg, class: "alert alert-info") %>
            <% end %>

            <%= yield %>
        </div>

    </body>
</html>

解决方法:

我将猜测填充该元素的脚本不是以与Turbolinks一起使用的方式编写的.

尝试opting that page or section out of turbolinks.或者只是完全禁用它,看它是否修复它.

AJAX返回的JavaScript无法正常工作。如何使用JavaScript?

AJAX返回的JavaScript无法正常工作。如何使用JavaScript?

这是我的页面Test1.asp

<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
<script type="text/javascript">
function Alex()
{
var xmlHttp;
try
  {  
  xmlHttp=new XMLHttpRequest();  }
catch (e)
  { 
   try
    {    
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");   
     }
  catch (e)
    {   
     try
      {     
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");   
          }
    catch (e)
      {      
      alert("Your browser does not support AJAX!");      
      return false; 
           }    
           } 
            }
  xmlHttp.onreadystatechange=function()
    {
    if(xmlHttp.readyState==4)
      {
      document.getElementById("Alex").innerHTML =xmlHttp.responseText;//Get Google Destination Map 
      }
    }
    xmlHttp.open("GET","Test2.asp",true);
    xmlHttp.send(null); 
   }
</script>
</head>

<body>
<div id ="Alex"></div>
<label onclick="Alex()" >ssss</label>
</body>
</html>

这是请求页面Test2.asp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>
<body>
<div id="Mathew"></div>
</body>
<script type="text/javascript" >
{
document.getElementById("Mathew").innerHTML='ajax is working';      
}
</script>
</html>

在页面(Test2.asp)中,javascript无法正常工作

我如何使用Ajax将test2.asp调用到我的test1.asp

AJAX返回的JavaScript无法正常工作如何使用JavaScript?

AJAX返回的JavaScript无法正常工作如何使用JavaScript?

这是我的页面Test1.asp

<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
<script type="text/javascript">
function Alex()
{
var xmlHttp;
try
  {  
  xmlHttp=new XMLHttpRequest();  }
catch (e)
  { 
   try
    {    
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");   
     }
  catch (e)
    {   
     try
      {     
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");   
          }
    catch (e)
      {      
      alert("Your browser does not support AJAX!");      
      return false; 
           }    
           } 
            }
  xmlHttp.onreadystatechange=function()
    {
    if(xmlHttp.readyState==4)
      {
      document.getElementById("Alex").innerHTML =xmlHttp.responseText;//Get Google Destination Map 
      }
    }
    xmlHttp.open("GET","Test2.asp",true);
    xmlHttp.send(null); 
   }
</script>
</head>

<body>
<div id ="Alex"></div>
<label onclick="Alex()" >ssss</label>
</body>
</html>

这是请求页面Test2.asp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>New Page 1</title>
</head>
<body>
<div id="Mathew"></div>
</body>
<script type="text/javascript" >
{
document.getElementById("Mathew").innerHTML='ajax is working';      
}
</script>
</html>

在页面(Test2.asp)中,javascript无法正常工作

我如何使用Ajax将test2.asp调用到我的test1.asp

Bootstrap javascript或popover无法正常工作

Bootstrap javascript或popover无法正常工作

我的Bootstrap出了问题.似乎JS不能以某种方式正常工作,因为即使是最简单的弹出窗口的例子也不起作用. (http://jsfiddle.net/weuWk/363/)
这个在JSfiddle上正常工作的小代码只是创建一个Button(没有悬停功能),如果在我的源代码中使用的话.

Modal-Plugin实际上正在工作,所以这应该意味着我以正确的方式包含js文件.无论如何我会复制它:

<script src="js/bootstrap.min.js"></script>
 <script src="http://code.jquery.com/jquery-latest.js"></script>

解决方法

jQuery需要在bootstrap的javascript之前包含,因为bootstrap只是jQuery“plugins”.

您应该按此顺序加入:

> jQuery
> Bootstrap
>你的Javascript

编辑:在关闭正文标记之前尝试此操作

<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="js/bootstrap.min.js"></script>
<script> 
$(function(){
    $('#test').popover();​
});
 </script>

此外,控制台是你的朋友.检查并确保没有错误.

解决了:

解决方案:>包含的正确顺序>修复我从js控制台得到的错误.

grails – Controller @Mixin在重新编译运行应用程序后才能正常工作

grails – Controller @Mixin在重新编译运行应用程序后才能正常工作

在我最新的grails 2.3.0项目中,我正在使用@Mixin注释来混合一个帮助程序类,以使我的控制器更加干燥.

如果在控制器内进行一些更改以强制重新编译控制器,则mixin正在工作.在初始编译(grails run-app)之后,助手没有混入 – 我得到一个MissingMethodException试图从助手类访问一个方法.

这是src / groovy的助手:

class ProjectHelper {
    def withProject(id,Closure c) {
        def project = Project.get(id)
        if (project) {
            c.call project
        } else {
            flash.message = ''Project not found!''
            render view: ''myView''
            return
        }
    }
}

和(其中一个)使用ProjectHelper的控制器:

@Mixin(ProjectHelper)
class ProjectController {
    def index() {
        withProject params.projectId,{project ->
            // do something with the project
        }
    }
}

当我使用grails clean清理项目并启动应用程序时,访问项目/索引后出现以下错误:

MissingMethodException occurred when processing request: 
    [GET] /<myApp>/project/
    No signature of method: <myPackage>.withProject() is applicable for argument types: 
    (java.lang.String,<myPackage>.ProjectController$_index_closure1_closure10) values: 
    [1,<myPackage>.ProjectController$_index_closure1_closure10@40d889b5]

在ReportController中进行一些更改(例如添加单个空格)之后,grails会编译2个源文件,并且可以使用带有Project的方法.访问项目/索引按预期工作.

这里出了什么问题?这是一个错误还是我错过了什么?

更新

事实证明,我完全错过了,使用grails.util.Mixin给了我另一个异常(MissingPropertyException),因为缺少对混合类属性的访问(在我的情况下:flash)(参见JIRA this issue),它正在使用groovy. lang.Mixin(重新编译后).

有没有办法在运行时手动重新编译/注入/混合groovy.lang.Mixin,或者我必须找到else部分的另一个错误处理,直到问题得到解决?

有什么建议?

解决方法

当使用mixins遵循类似的代码重用模式时,我经常遇到相同的MissingMethodException.

在我的例子中,将groovy.lang.Mixin更改为grails.util.Mixin(或者更具体地说,将grails.util.Mixin的导入添加到我的控制器)可以完全解决问题.

至于无法访问控制器变量,您可能会等待GRAILS-9905被解决.我应该注意到,在缺陷讨论中列出了一些建议的解决方法.

关于javascript – Braintree Drop-In UI需要重新加载才能正常工作js页面重新加载一次的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于AJAX返回的JavaScript无法正常工作。如何使用JavaScript?、AJAX返回的JavaScript无法正常工作如何使用JavaScript?、Bootstrap javascript或popover无法正常工作、grails – Controller @Mixin在重新编译运行应用程序后才能正常工作的相关信息,请在本站寻找。

本文标签: