如何订阅html表单的click事件?

时间:2012-06-20 11:49:48

标签: asp.net html5 asp.net-4.0 google-checkout

我有一个Google Checkout“立即购买”按钮,我想添加动态创建的信息,以便在点击时发送。我该怎么做?

按钮的html是:

<form action="https://sandbox.google.com/checkout/..." id="Form1" method="post" name="..." target="_top">
<input name="item_name_1" type="hidden" value="..." />
...
<input alt="" src="https://sandbox.google.com/checkout/buttons/buy.gif?merchant_id=..." type="image" />
</form>

那我该添加什么? (如果可能的话,我想通过ASP.Net代码来实现。)

我尝试添加onclick="Button1_Click",但它不起作用。

2 个答案:

答案 0 :(得分:1)

ASP是服务器端脚本,因此在加载页面后无法启动它。 onlcick属性用于启动javascript。 两种解决方法:

  • 您可以做的是将其重定向到另一个页面,该页面会重定向到Google Checkout。
  • 使用javascript和ajax,加载动态信息,然后使用javascript
  • 提交

答案 1 :(得分:1)

如果是Google Checkout,则应考虑使用现有的.Net library for Google Checkout

虽然上述建议可行,但正确(安全)的方式是documented here。 XML备选方案(签名)为here,其中一个允许您以安全的方式直接向Google发送FORM POST。

通过客户端方法提交的内容总是会让您容易受到篡改 - 与向Google发布基本HTML表单相比,它(安全方面)没什么区别。


<强>更新

  

... 不支持立即购买 ...

在一天结束时,有两件事使“现在购买”与其他任何“购物车”提交不同:

  1. 图片
  2. 立即购买的单件商品(与其他实施的一件或多件相比)。
  3. sample code from the .Net Library。它应该给你所需要的一切......


    更新2

    图书馆没有任何“僵化”。您不必使用其中的所有内容 - 您甚至可以利用已经为您创建的所有管道。

    简单示例,使用Google Checkout .Net Library

    实现“立即购买”

    Web窗体代码(aspx):

    <p>Some ASP.net button:<br />
    <asp:Button ID="Button1" runat="server" Text="BUY ME NOW" onclick="Button1_Click" /><br />
    
    An ASP.NET Image Button using BUY NOW Image:<br />
    <asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="https://checkout.google.com/buttons/buy.gif?merchant_id=[USE YOUR OWN MERCHANT ID]&amp;w=117&amp;h=48&amp;style=white&amp;variant=text&amp;loc=en_US" onclick="ImageButton1_Click" />
    

    此时这是您在浏览器中看到的内容:

    screen shot Google Checkout Buy Now

    代码(内联或代码隐藏):

    using GCheckout.Checkout;
    using GCheckout.Util;
    
    ....
    
    protected void Button1_Click(object sender, EventArgs e)
    {
        doSomething();
    }
    
    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        doSomething();
    }
    
    private void doSomething()
    {
        /**
         * Use the correct Merchant ID and Key based on GCheckout.EnvironmentType
         * You cannot mix/match sandbox and production id or key
         */
        CheckoutShoppingCartRequest Req = new CheckoutShoppingCartRequest("your_production_MID", "your_production_KEY", GCheckout.EnvironmentType.Production, "USD", 20);
    
        /**
         * Everything from this point is a copy and paste
         * from .net libary sample code
         * http://code.google.com/p/google-checkout-dotnet-sample-code/source/browse/examples/post_cart/simple.aspx
         */
        Req.AddItem("Mars bar", "Packed with peanuts", 0.75m, 2);
    
        //lets make sure we can add 2 different flat rate shipping amounts
        Req.AddFlatRateShippingMethod("UPS Ground", 5);
    
        //Add a rule to tax all items at 7.5% for Ohio
        Req.AddStateTaxRule("OH", 7.5, true);
    
        GCheckoutResponse Resp = Req.Send();
        if (Resp.IsGood)
        {
            Response.Redirect(Resp.RedirectUrl, true);
        }
        else
        {
            Response.Write("Resp.ResponseXml = " + Resp.ResponseXml + "<br>");
            Response.Write("Resp.RedirectUrl = " + Resp.RedirectUrl + "<br>");
            Response.Write("Resp.IsGood = " + Resp.IsGood + "<br>");
            Response.Write("Resp.ErrorMessage = " + Resp.ErrorMessage + "<br>");
        }
    }
    

    重要

    以上只是示例代码,以说明您可以使用.Net库做些什么。 要遵守Google Checkout实施政策,请使用ImageButton实施 - 它确保您使用Google的“立即购买”按钮(未更改等)。