POST挂起脚本,并在提交表单后不执行代码

时间:2017-05-15 17:07:53

标签: php jquery ajax

我有问题。我有一张信用卡表格,客户将填写数据并提交给银行评估。但是,它应该在将其数据发送到支付网关的函数**之前执行一些操作**。 我将逐步说明应该发生的事情:

  1. 用户填写卡片详细信息;
  2. 发送表格;
  3. 用户收到回复"请稍候,查看数据";
  4. 用户已收到"已批准付款"或者"付款被拒绝"响应;
  5. 但是第3步没有运行。这是我的代码:

    $('#credit_card_form').submit(function() {
        $.post($("#credit_card_form").attr('action'), $("#credit_card_form").serialize(), function(data){
            $("#return_form").html(data);
        }); 
        return false;
    });
    

    POST发送到这里:

    if ($_POST['f'] == 'pay_credit_card') {
        $brand_card = $_POST['card_brand'];
        $number_card = $_POST['card_number'];
        $exp_month = $_POST['card_valid_month'];
        $exp_year = $_POST['card_valid_year'];
        $cod_security = $_POST['card_security'];
        $name_card = $_POST['card_name'];
    
        // Example - just to illustrate that i have a check here
        if ($_POST['card_number'] == '') {
            echo "Fill the field X"
            return false;
        }
    
        // d_none = display: none;
        echo "<script>$('#processing_card').removeClass('d_none'); $('#div_credit_card_form').addClass('d_none');</script>";
        $return_gateway = CS_MundiPagg($brand_card, $number_card, $exp_month, $exp_year, $cod_security, $name_card);
        if ($return_gateway == 'Captured') {        
            echo "<script>$('#success_card').removeClass('d_none'); $('#modal-close').addClass('d_none');</script>";
        }
    }
    

    脚本经过&#34; echo&#34;在CS_MundiPagg()的上方直接回答,在脚本的末尾。好像它&#34;崩溃&#34;用户提交表单后只提供最终答案(付款是否已批准)的脚本。

    我几乎尝试过所有事情,但我找不到解决方案。隧道尽头有希望吗?

2 个答案:

答案 0 :(得分:0)

您应该确保在使用序列化插件之前关闭了我遇到此问题的<form> </form>代码,这要归功于我在jquery中发现了一个错误。另外,请务必使用$(document).ready(function ()

还要将代码更改为

 $(document).ready(function () {
//replace to buttonid click function 
$('#credit_card_form').click(function() {
    var combinedData = $("#credit_card_form").serialize();
    $.post(
                        "page.php",
                        combinedData
                 ).done(function(data) {
               //alert("Successfully submitted!");


                        $("#result").html(data);
                 }).fail(function () {
                          //alert("Error submitting forms!");
                 })

});
});

答案 1 :(得分:0)

问题是,当你的PHP代码从例程CS_MundiPagg()收到答案后,你会在完成所有工作后收到来自AJAX调用的答案。

要显示&#34;请稍候!&#34;在发送查询之前,您应该在浏览器中执行此操作。

你可以这样试试:

$('#credit_card_form').submit(function() {
    var myFormData = $("#credit_card_form").serialize();
    var myWaitMsg = "Please wait ... <br><img src='img/waiting.gif'>";

    $("#return_form").html(myWaitMsg);
    $.post(
          $("#credit_card_form").attr('action'), 
          myFormData, 
          function(data){
                  $("#return_form").html(data);
          }
    ); 
    return false;
});