【发布时间】:2014-08-25 15:11:04
【问题描述】:
我遇到了一个对我来说没有多大意义的情况。正如一些背景信息一样,我使用的是 Laravel 框架。当使用 Laravel 的 '->with('var', $array)' 语法请求页面时,相关页面会调用查询。这个查询(我稍后会发布)在页面加载时工作得很好,并成功地插入了我提供给它的虚拟数据。
我通过使用 jQuery 的 Ajax $.post 调用相同的查询,单击一个按钮。但是,当我执行此 $.post 并调用此查询时,每次都会收到内部服务器错误。一切都完全一样,包括传递的信息;唯一的区别似乎是它是在页面加载时调用还是通过 $.post 调用。
这是错误:
以下是在页面加载时执行查询的代码:
routes.php 将 HTTP 获取请求发送到名为 AppController.php 的文件
routes.php AppController.php
然后使用从DeviceCheckoutController.php获取的以下数组制作页面
然后转到DeviceCheckout.php
我能够在页面上回显 $test,并且每次重新加载页面时它都会返回新行的 ID(这显然意味着“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,特别是 switch 语句的“checkoutDeviceForStudent”部分:
然后回到之前在DeviceCheckout.php 中显示的那个查询
最后,这是我的数据库结构供参考:
关于为什么会发生这种情况的任何解释?此外,任何 Laravel 或其他一般最佳实践技巧都将不胜感激,因为我在使用这个框架和整体编程方面缺乏经验。
抱歉这么长的帖子,我希望有足够的信息来诊断这个问题。如果我需要添加其他内容,请告诉我。
编辑:在页面顶部包含错误图片。
【问题讨论】:
-
毕竟,您需要包含错误的实际内容!
-
如果你想要解释,请查看网络服务器日志为什么他会抛出 HTTP 500。
-
服务器端错误日志显示什么?不要给我们看代码图片,复制粘贴实际代码。
-
在
app/config/app.php中将debug设置为true。这样您就可以看到错误,我们可以为您提供帮助。 -
现在应该在页面顶部显示错误图片。对于那个很抱歉。此外,我确实将调试设置为 true,但它不会引发错误,因为(据我所知),当通过 Ajax 调用 Laravel 查询时它不会。
标签: javascript php jquery ajax laravel