开发者问题收集

在 Javascript 中解析数据时显示非对象值的空结果

2021-10-23
86

我将 Laravel 与 Sweetalert 结合使用,并尝试显示一个自定义弹出消息,该消息显示 Laravel 变量的值:

      $(document).on('click', '#custombtn', function(e) {
            e.preventDefault();
            let form = $(this).parents('form');
            swal(
                {
                    title: "Alert!",
                    text: "Youre wallet balance is: {!! digits2persian(json_decode($user_wallet->balance)) !!}",
                    type: "warning",
                    allowEscapeKey: false,
                    allowOutsideClick: false,
                    showCancelButton: true,
                    confirmButtonColor: "#DD6B55",
                    confirmButtonText: "Yes",
                    cancelButtonText: "No",
                    showLoaderOnConfirm: true,
                    closeOnConfirm: false
                }).then((isConfirm) => {
                if (isConfirm.value === true) {
                    window.location.href = {!! json_encode(route('courseRegistrationWithWallet', ['course'=>$item->cor_id,'wallet'=>$user_wallet->id ?? ''])) !!}
                }
                return false;
            });
        });

但是现在的问题是,当 $user_wallet->balance 返回 null 时,将发生此错误:

尝试获取非对象的属性“balance”

因此,如果未设置变量,我尝试这样做以显示 结果:

{!! digits2persian(json_decode($user_wallet->balance)) ?? '' !!}

但是没有解决这个问题,错误仍然出现!

那么如何解决这个问题呢?

2个回答

仔细阅读错误消息:

Trying to get property 'balance' of non-object

不是 余额 为空,而是 包含 余额的内容。因此,您需要处理 $user_wallet 为空的情况,例如:

isset($user_wallet) ? digits2persian(json_decode($user_wallet->balance)) : 'No wallet'
IMSoP
2021-10-23

尝试这个 if($user_wallet->balance > 0){

或者这个 $user_wallet->balance ?? "0"

sorax
2021-10-23