2011-12-10 57 views
0

我正在使用来自http://simplecartjs.com/的第三方购物车。 对于一个正常的结帐我可以使用:与onClick事件的Javascript链接

<a href="javascript:;" class="simpleCart_checkout" >Checkout</a> 

和它的作品。但我需要添加一些服务器端功能,不知道如何去做。其中simpleCart_Checkout类存储在JavaScript文件中的代码如下:

me.addEventToArray(getElementsByClassName('simpleCart_checkout') , simpleCart.checkout , "click"); 

编辑:和这样的:

me.checkout = function() { 
     if(me.quantity === 0){ 
      error("Cart is empty"); 
      return; 
     } 
     switch(me.checkoutTo){ 
      case PayPal: 
       me.paypalCheckout(); 
       break; 
      case GoogleCheckout: 
       me.googleCheckout(); 
       break; 
      case Email: 
       me.emailCheckout(); 
       break; 
      default: 
       me.customCheckout(); 
       break; 
     } 
    }; 

所以我试图用一个按钮直接调用的方法做:

<asp:Button ID="CheckoutButton" runat="server" Text="Checkout" 
      onclick="CheckoutButton_Click" OnClientClick="Checkout()" /> 

      <script type="text/javascript"> 
       function Checkout() { 

        javascript: simpleCart.checkout; 
       }  
       </script> 

它调用服务器端,但不会调用JavaScript链接。我是新来的asp.net和JavaScript,所以不知道如何做到这一点,请帮助。

回答

1

试试这个:

<asp:Button ID="CheckoutButton" runat="server" Text="Checkout" 
      onclick="CheckoutButton_Click" OnClientClick="javascript:Checkout();" /> 

     <script type="text/javascript"> 
      function Checkout() { 

       simpleCart.checkout(); 
       return true; 

      }  
      </script> 

编辑: 你想要的服务器事件后,被称为脚本。那么你需要在“CheckoutButton_Click”结尾调用你的Checkout函数。

Page.ClientScript.RegisterStartupScript(Page.GetType(), "calling checkout", "<script>CheckOut();</script>", true); 

simpleCart.checkout()不会有机会做重定向,为的OnClientClick返回true,回来后发生。

+0

同样的事情发生,服务器端被调用并回发但不执行JavaScript。 – Matt

+1

你确定你已经引用了simpleCart吗?在你的Checkout函数中放置一个警报('xxx')来验证你的脚本被调用。 – fengd

+0

好的警报工作,所以javascript被调用,它只是没有找到正确的simpleCart方法。我编辑了我的答案,以显示simpleCart.js中所有结帐实例。 – Matt

0

这应该够了。

function Checkout() { 
    simpleCart.checkout(); 
    return true; 
} 
0

你可以从服务器端调用你的javascript。

Page.RegisterStartupScript will assists you to fire javascript from code behind. 

Page.ClientScript.RegisterStartupScript(Page.GetType(), Guid.NewGuid().ToString(), "alert('hello')", true);