我在尝试升级一个基于Laravel的网站时遇到了两个问题。它使用DataTables来处理很多我真的不想重写的报告,但我不时会得到302(找到的)响应,而不是JSON
这导致了问题二:当这种情况发生时,用户会被注销。
有人对这些问题的原因有什么建议吗?
使用:Laravel 4.1.27jQuery 1.8.3PHP 5.5.19数据表1.10.0
DataTables调用之一:
function makeMiscItemsTable(tableSelector, url) {
if (url === undefined) {
miscItemsTable = $(tableSelector).DataTable({
"fnRowCallback": function (nRow, aData, iDisplayIndex) {
$(nRow).children('.donation-id').html(['<a title="View/Edit" href="/inventory/donation/details/', aData['donation_id'], '">', aData['donation_id'], '</a>'].join(""));
// Apply stying to rows based on the item's status: received, recycled or sent/other
if (aData['status'] == 'sent') {
$(nRow).addClass('row-blue');
} else if (aData['status'] == 'recycled') {
$(nRow).addClass('row-red');
} else {
$(nRow).addClass('row-green');
}
},
"oLanguage": {
"sProcessing": "<img src='/assets/images/ajax_clock_small.gif'>",
"sSearch": ""
},
"bDeferRender": true,
"bProcessing": true,
"sAjaxSource": '/inventory/donation/misc_items',
"sPaginationType": "four_button",
"bRetrieve": true,
"aaSorting": [[1, "desc"]],
'aLengthMenu': [[10, 25, 50, 100, -1], [10, 25, 50, 100, 'All']],
'iDisplayLength': 25,
'aoColumns': [
{
"mDataProp": null,
"sClass": "center-text",
"sDefaultContent": '<input type="checkbox" name="misc-item-select" class="misc-item-check" value="selected" false>'
},
{
"mDataProp": 'donation_id',
"sClass": 'donation-id'
},
{"mDataProp": 'description'},
{
"mDataProp": 'status',
"sClass": "hide"
},
{
"mDataProp": 'id',
"sClass": "hide misc-item-id"
}
],
"aoColumnDefs": [
{'bSortable': false,
'aTargets': [0]
}
]
});
} else {
miscItemsTable.ajax.url(url).load();
}
}
控制器代码:
public function get_misc_items($status = null)
{
$attributes = DonatedMiscItem::$datatable_attributes;
if ($status === null) {
$items = DonatedMiscItem::all($attributes);
} else {
$items = DonatedMiscItem::where('status', $status)->get($attributes);
}
$results = array();
$count = $items->count();
foreach ($items as $item) {
$results[] = $item['original'];
}
return Response::json(array('aaData' => $results, 'iTotalRecords' => $count, 'iTotalDisplayRecords' => $count));
}
路线:
Route::get('donation/misc_items/{status?}', 'DonationController@get_misc_items');
URL名为:
site.com/inventory/donation/misc_items?_=1425080932188
302 respose是一个重定向,可能是由应用程序会话超时触发的,这就是用户同时注销的原因。检查位置标头以查找重定向的实际url是否为登录页面。