Я работал над этой кодовой базой последний месяц. И буквально вчера я начал сталкиваться с этой проблемой в нескольких файлах. Предполагается, что код изменит 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>
Я получаю различные виды ошибок, такие как:
Я также могу добавить скриншоты VS Code, если это полезно.
Есть и другие файлы со строками json_encode
, и они также показывают ту же ошибку. Сначала я подумал, что это просто предупреждение. Однако эта ошибка также влияет на выходные данные проекта, то есть намеченная часть кода не работает.
Это проект PHP Laravel. Единственное, что я помню, это обновление Laravel с 5.4.* до 5.5.*, до этого он работал идеально. Я все еще новичок, поэтому не знаю, как справиться с этой ошибкой. Или есть ли другой способ сделать то, что делают эти строки кода?
Большое спасибо. Если хотите увидеть, вот полный файл: https://codeshare.io/3y1Vo6
Зачем отмечать larevel
?
Вы автоматически форматировали свой код и превращали операторы типа $('#service_sales').load({!! json_encode(url('/invoice/sales')) !!} + '/' + service_id);
в версию с разрывами строк, которая у вас сейчас есть?
@Mohammadsiabbou Большое спасибо, чувак. Это решило проблему.
@RobbyCornelissen PHP Intelliphense делает это автоматически в VS Code.
@rustybladez я поставлю это как ответ и попытаюсь объяснить почему. Рад, что это сработало.
«Единственное, что я помню, это обновление Laravel с 5.4.* до 5.5.*», — последняя версия Laravel 5.4 была опубликована в августе 2017 года, последняя версия 5.5 — в августе 2020 года. Имейте в виду, что вся ветка Laravel v5 сильно устарела и не должна была использоваться в течение многих лет. Кроме того, это проблема JS, проблема AJAX, проблема PHP или проблема JSON?
Проблема здесь:
$('#service_sales').load({
!!json_encode(url('/invoice/sales')) !!
} + '/' + service_id); // Shows error
У вас здесь более чем одна проблема.
Решение
$('#service_sales').load("{{ url('/invoice/sales') }}" + '/' + service_id);
При использовании "{{ url('/invoice/sales') }}"
печатается фактический URL-адрес (результат PHP-кода). Я заключаю его в двойные кавычки, чтобы JavaScript воспринимал его как строку. Этот подход помогает избежать проблем с «неверным синтаксисом», поскольку в противном случае JavaScript интерпретировал бы его как код.
Согласно документации load принимает строку, поэтому должно быть так:
$('#service_sales').load("{{ url('/invoice/sales') }}" + '/' + service_id);
, скажите мне, поможет ли это.