非空断言只能在 TypeScript 文件中使用。javascript

问题描述 投票:0回答:1

过去一个月我一直在研究这个代码库。就在昨天,我开始在一些文件上遇到这个问题。该代码应该根据所选选项更改 div。这是显示错误的代码片段(我已向显示错误的特定行添加了注释):

<script>
    function del(id) {
        //alert(id)
        $('#service_sales').load({
            !!json_encode(url('/invoice/remove')) !!
        } + '/' + id); // Shows error


    }
    $(document).ready(function() {

        $('#complete').on('click', '#complete', function() {
            $('#submit').click();

        });
        $('#service_id').on('change', function() {
            $('#complete').hide();
            $('#comment').hide();
            $('#tender').hide();
            var service_id = $('#service_id').val();
            //ajax
            $('#service_sales').load({
                !!json_encode(url('/invoice/sales')) !!
            } + '/' + service_id); // Shows error 
        });

        $('#patient_id').on('change', function() {
            var patient_id = $('#patient_id').val();
            $('#payment').show();
            $('#calculateBtn').show();
        });



        $('#calculate').click(function() {

            $('#tender').hide();
            $('#complete').hide();
            var cash = $('#cash').val();
            var discount = $('#discount').val();
            var sub_total = $('#sub_total').val();
            var tax = $('#tax_percent').val();

            if (sub_total.length) {

                if (cash > 0) {

                    var total = sub_total - discount;
                    var tax_amount = total * tax / 100;
                    var total_amount = total + tax_amount;

                    var tender_amount = cash - total_amount.toFixed();;

                    if (tender_amount < 0) {

                        $('#msg').show();
                        $("#msg").html("<div style='color:red;margin-bottom: 20px;'><span class='btn-sm alert-danger'>Insufficient Balance...</span></div>");
                    } else {

                        $('#msg').hide();
                        $('#complete').show();
                        $('#comment').show();
                        $('#tender').html('<strong>Sub Total: Tk ' + sub_total + '</strong><br><strong>Discount: Tk ' + discount + '</strong><br><b>-----------------------------<b><br><strong>Total: Tk ' + total_amount.toFixed() + '</strong><br><strong>Cash: Tk ' + cash + '</strong><br><strong>Return: Tk ' + tender_amount.toFixed() + '</strong>');
                        $('#tender').show();
                    }
                } else {
                    $('#msg').show();
                    $("#msg").html("<div style='color:red;margin-bottom: 20px;'><span class='btn-sm alert-danger'>Enter Cash Amount...</span></div>");
                }
            } else {
                $('#msg').show();
                $("#msg").html("<div style='color:red;margin-bottom: 20px;'><span class='btn-sm alert-danger'>Please Select Doctor First...</span></div>");

            }

        });
    }); // Shows error

    function getDoctor() {
        var doctorName = $("#doctorName option:selected").text();
        $("#selectedDoctorName").val(doctorName);
    }
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

我遇到了不同类型的错误,例如:

  1. 预计财产分配
  2. 非空断言只能在 TypeScript 文件中使用。javascript
  3. ';'预计
  4. 预期的声明或陈述.javascript

如果有帮助的话,我还可以添加 VS Code 屏幕截图。

还有其他文件也带有

json_encode
行,它们也显示相同的错误。起初,我以为这只是一个警告。但是,此错误也会影响项目输出,这意味着预期的代码部分无法正常工作。

这是一个 PHP Laravel 项目。我记得做的唯一重要的事情是将 Laravel 从 5.4.* 更新到 5.5.*,在此之前,它运行得非常完美。我还是个新手,所以不知道如何处理这个错误。或者是否有另一种方法可以完成这些代码行正在做的事情?

非常感谢。如果您想查看,这是完整文件:https://codeshare.io/3y1Vo6

javascript php json ajax laravel
1个回答
0
投票

问题就在这里:

$('#service_sales').load({
  !!json_encode(url('/invoice/sales')) !!
} + '/' + service_id); // Shows error 

您遇到的问题不止一个。

  1. 您正在使用对象作为接受字符串的函数的参数。
  2. 你不是打印 PHP 代码,而是直接用 JS 编写,这是无效的语法。

解决办法是

$('#service_sales').load("{{ url('/invoice/sales') }}" + '/' + service_id);

通过使用

"{{ url('/invoice/sales') }}"
,可以打印实际的 URL(PHP 代码的结果)。我将其放在双引号内,以便 JavaScript 将其视为字符串。这种方法有助于避免“无效语法”问题,否则 JavaScript 会将其解释为代码。

© www.soinside.com 2019 - 2024. All rights reserved.