首页 > 解决方案 > 即使成功后,ajax成功调用执行else条件

问题描述

我根据 if 和 else 条件从 php 返回响应。即使在执行 if 条件之后,ajax 成功调用也会执行 else 条件。下面是我的代码。我没有让交易成功,而是没有足够的余额。我尝试了很多方法,但没有奏效。任何帮助都会很棒。

php代码

<?php
    if(isset($_POST['name'])){
        // some code
    }

    if(isset($_GET['paymentInfo']))
    {
        // some code
        if($dataPayerBalance >= $amount)
        {
            // some code
            $response = 'success'; 
        }
        else
        {
            $response = 'error'; 
        }
        // some code
        echo json_encode($response);
    }
?>

ajax 调用

 $.ajax({
            type: 'get',
            data: {'paymentInfo' : dataToSend},
            success: function(response)
            {
                if(response == 'success')
                {
                    $('.modal-body').html("Transaction Successful");
                    $('#empModal').modal('show');
                }
                else
                {
                    $('.modal-body').html("Don't have enough balance");
                    $('#empModal').modal('show');
                }
                            
            },
            error: function()
            {
                $('.modal-body').html("Error Occured");
                $('#empModal').modal('show');
            }
    });

标签: phpjsonajax

解决方案


问题是您将字符串编码为 json 并且期望不是 json,而是响应中的字符串。让我们把它们都变成json:

在你的 php 代码中:

echo json_encode(['result'=>$response]);

在您的 ajax 调用中:

$.ajax({
    url: "your api url",
    type: 'GET',
    data: {'paymentInfo' : dataToSend},
    dataType: 'json'
}).done(function( data ) {
    if (data.result == 'success'){
        //your custom action
    }
})
.fail(function() {
    //your custom action
});

推荐阅读