DataTables在302响应上注销用户时出错


DataTables error logging out user on 302 response

我在尝试升级一个基于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是否为登录页面。