首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >woocommerce POSTing数据在javascript (jQuery)完成之前

woocommerce POSTing数据在javascript (jQuery)完成之前
EN

Stack Overflow用户
提问于 2014-05-04 21:22:23
回答 1查看 519关注 0票数 0

我有一个自定义网关(它工作得很好),问题是当客户第一次购买某件东西时,有一些令牌需要用卡片信息生成,问题是在生成该令牌之前,表单尝试提交,但是显示了一个错误,显示“找不到对象”,因此,如果我再次按submit按钮(或"place order“按钮),所有操作都正常!

我认为,到了第二次,令牌就产生了,并在相应的隐藏字段中:

这是我的密码,希望有人能帮我

HTML (来自chrome检查器):

代码语言:javascript
复制
<input type="hidden" name="card-name" data-conekta="card[name]">
<input type="hidden" name="exp-month" data-conekta="card[exp_month]">
<input type="hidden" name="exp-year" data-conekta="card[exp_year]">
<input type="hidden" name="conektaTokenId" value="">
<input type="hidden" name="conektaCustId" value="false">

Javascript

代码语言:javascript
复制
jQuery(window).load(function() {

var form;
var first_name;
var last_name;
var cvc;


jQuery('form[name="checkout"]').submit(function(event) {

    jQueryform = jQuery(this);

    Conekta.setPublishableKey(jQuery('input[name="pbkey"]').val());
    console.log('entro');
    if( jQuery('input[name="conektaCustId"]').val()=="true" &&  jQuery('input[name="conektaTokenId"]').val().substr(0,4)!="tok_"){
        console.log('entro');
        first_name = jQuery('#billing_first_name').val();
        last_name = ' ' + jQuery('#billing_last_name').val();
        expiry = jQuery('#conekta_card-card-expiry').val().replace(/ /g, '').split("/");

        jQuery('input[name="card-name"]').val( first_name + last_name );
        jQuery('input[name="exp-month"]').val( Number(expiry[0]));
        jQuery('input[name="exp-year"]').val( Number(expiry[1]));

        jQueryform.prepend('<span class="card-errors"></span>');

        Conekta.token.create(jQueryform, conektaSuccessResponseHandler, conektaErrorResponseHandler);
        woocommerce_order_button_html
        return false;

    }
    else{
        return;
    }

});

var conektaSuccessResponseHandler= function(response){

    var token_id = response.id;

    jQuery('input[name="conektaTokenId"]').val(token_id);

}

var conektaErrorResponseHandler= function(response){

    jQueryform.find('.card-errors').text(response.message);

}

});

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-21 21:54:56

我已经找到了解决方案,您必须将类processing添加到结帐表单中,并且在处理完要发送到任何需要的地方(通常是wordpress/woocommerce)时,删除该类,以便表单可以提交新的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23461722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档