Я столкнулся с ситуацией, которая для меня не имеет большого значения. Как некоторая справочная информация, я использую структуру Laravel. Эта страница вызывает запрос при запросе страницы с использованием синтаксиса '-> Laravel's' -> with ('var', $ array). Этот запрос (который я вывешиваю позже) отлично работает на загрузке страницы и успешно вставляет фиктивные данные, которые я его подавал.
Я вызываю этот же запрос через Ajax $ .post, используя jQuery, одним нажатием кнопки. Однако, когда я делаю этот $ .post и вызываю этот запрос, каждый раз я получаю ошибку внутреннего сервера. Все в точности то же самое, информация передается; единственная разница, похоже, заключается в том, вызвана ли она при загрузке страницы или через $ .post.
Вот ошибка:
Ниже приведен код, который выполняет запрос при загрузке страницы:
routes.php
отправляет запрос HTTP-запроса в файл под названием AppController.php
routes.php AppController.php
Затем страница будет сделана со следующим массивом, полученным из DeviceCheckoutController.php
Затем он переходит на DeviceCheckout.php
Я могу выполнить echo $ test на странице, и он возвращает идентификатор новой строки каждый раз, когда страница перезагружается (что явно означает, что запрос «insertGetId» работал). Тем не менее, я подключил этот запрос до загрузки страницы только для проверки. То, что я действительно хочу, – это щелкнуть по кнопке. Вот код для этого:
$("#checkoutFormbox").on('click', '#checkoutButton', function() { var checkoutInformation = Object(); var accessories = []; var counter = 0; var deviceName = checkoutDeviceTable.cell(0, 0).data(); $(".accessoryCheckbox").each(function() { //add accessory ID's to this list of only accessories selected to be checked out if($(this).val() == "1") { accessories[counter] = $(this).data('id') + " "; } counter++; }); checkoutInformation['deviceID'] = $(".removeButton").val(); //deviceID was previously stored in the remove button's value when the add button was clicked checkoutInformation['outBy'] = ''; checkoutInformation['outNotes'] = $("#checkOutDeviceNotes").val(); checkoutInformation['idOfAccessories'] = 2; checkoutInformation['dueDate'] = $("#dueDate").val(); if($("#studentIdButton").hasClass('active')) { checkoutInformation['renterID'] = 0; checkoutInformation['emplid'] = 1778884; console.log(checkoutInformation); $.post("http://xxx.xxx.xxx.xxx/testing/public/apps/devicecheckout-checkoutdevices", {type: "checkoutDeviceForStudent", checkoutInformation: checkoutInformation}, function(returnedData) { alert(returnedData); }); } });
Затем он также перенаправляется в AppController.php
, в частности, в команду checkoutDeviceForStudent оператора switch:
Затем вернитесь к этому запросу, который показан ранее в DeviceCheckout.php
Наконец, вот моя структура БД для справки:
Любое объяснение, почему это происходит? Кроме того, любой Laravel или другие общие советы по лучшей практике будут очень признательны, поскольку я неопытен в использовании этой структуры и программирования в целом.
Извините за такой длинный пост, я надеюсь, что для диагностики этой проблемы достаточно информации. Дайте мне знать, если мне нужно включить что-нибудь еще.
Изменить: Включено изображение ошибки в верхней части страницы.