Ненулевые утверждения можно использовать только в файлах TypeScript.javascript

Я работал над этой кодовой базой последний месяц. И буквально вчера я начал сталкиваться с этой проблемой в нескольких файлах. Предполагается, что код изменит 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

Согласно документации load принимает строку, поэтому должно быть так: $('#service_sales').load("{{ url('/invoice/sales') }}" + '/' + service_id);, скажите мне, поможет ли это.

Mohammad si abbou 24.06.2024 10:41

Зачем отмечать larevel?

Subha 24.06.2024 10:41

Вы автоматически форматировали свой код и превращали операторы типа $('#service_sales').load({!! json_encode(url('/invoice/sales')) !!} + '/' + service_id); в версию с разрывами строк, которая у вас сейчас есть?

Robby Cornelissen 24.06.2024 10:43

@Mohammadsiabbou Большое спасибо, чувак. Это решило проблему.

rustybladez 24.06.2024 10:49

@RobbyCornelissen PHP Intelliphense делает это автоматически в VS Code.

rustybladez 24.06.2024 10:49

@rustybladez я поставлю это как ответ и попытаюсь объяснить почему. Рад, что это сработало.

Mohammad si abbou 24.06.2024 10:50

«Единственное, что я помню, это обновление Laravel с 5.4.* до 5.5.*», — последняя версия Laravel 5.4 была опубликована в августе 2017 года, последняя версия 5.5 — в августе 2020 года. Имейте в виду, что вся ветка Laravel v5 сильно устарела и не должна была использоваться в течение многих лет. Кроме того, это проблема JS, проблема AJAX, проблема PHP или проблема JSON?

Nico Haase 24.06.2024 10:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
7
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема здесь:

$('#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 интерпретировал бы его как код.

Другие вопросы по теме