Laravel 4(+ Datatables)航线间歇性地工作

时间:2015-03-12 17:28:17

标签: php jquery ajax laravel-4 datatable

我正在使用Datatables显示大量行,因此我决定使用服务器端处理。我在后端与Laravel 4合作。

问题非常非常 非常很奇怪。

每次我刷新表所在的页面时,对服务器的AJAX请求 然而如果我重播相同的XHR请求(使用谷歌开发工具)或甚至只是做任何其他行动(即排序,搜索)路线可能不工作(请注意,我已经使用可能,因为它&# 39;真是随机的。)

这是路线:

Route::group(['before' => 'auth', 'prefix' => 'api'], function()
{
    Route::get('announcements', 'AnnouncementsAPIController@getAnnouncements');
});

这是控制器:

class AnnouncementsAPIController extends BaseController {

    public function getAnnouncements()
    {
        $queries = $this->request->query('queries');

        $office = (isset($queries['office']) === true) 
            ? Office::find(preg_replace("/[^0-9]/", "", $queries['office'])) 
            : Office::find(Auth::user()->office->id);

        $builder = $office->announcements();

        $columns = [
            'announcements.id',
            'announcements.extractor_task_id',
            'announcements.user_id',
            'announcements.office_id',
            'announcements.phone_status',
            'announcements.phone_recall',
            'announcements.created_at',
            'announcements.name',
            'announcements.phone',
            'announcements.date',
            'announcements.trademark',
            'announcements.model',
            'announcements.price',
            'announcements.city',
            'announcements.kilometers',
            'announcements.crmstate',
            'announcements.extractor_updated_at'
        ];

        $announcements = Datatablefy::prepare($builder, 'Announcement', ['columns' => $columns], Input::all());
        $announcements = $announcements->datatablefy();
        return $announcements->make(true);
    }

}

这是Datatables生成的示例网址:

http://localhost:8000/api/announcements?draw=7&columns%5B0%5D%5Bdata%5D=website&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=id&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=date&columns%5B2%5D%5Bname%5D=&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B3%5D%5Bdata%5D=city&columns%5B3%5D%5Bname%5D=&columns%5B3%5D%5Bsearchable%5D=true&columns%5B3%5D%5Borderable%5D=true&columns%5B3%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B3%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B4%5D%5Bdata%5D=trademark&columns%5B4%5D%5Bname%5D=&columns%5B4%5D%5Bsearchable%5D=true&columns%5B4%5D%5Borderable%5D=true&columns%5B4%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B4%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B5%5D%5Bdata%5D=model&columns%5B5%5D%5Bname%5D=&columns%5B5%5D%5Bsearchable%5D=true&columns%5B5%5D%5Borderable%5D=true&columns%5B5%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B5%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B6%5D%5Bdata%5D=price&columns%5B6%5D%5Bname%5D=&columns%5B6%5D%5Bsearchable%5D=true&columns%5B6%5D%5Borderable%5D=true&columns%5B6%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B6%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B7%5D%5Bdata%5D=name&columns%5B7%5D%5Bname%5D=&columns%5B7%5D%5Bsearchable%5D=true&columns%5B7%5D%5Borderable%5D=true&columns%5B7%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B7%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B8%5D%5Bdata%5D=phone&columns%5B8%5D%5Bname%5D=&columns%5B8%5D%5Bsearchable%5D=true&columns%5B8%5D%5Borderable%5D=true&columns%5B8%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B8%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B9%5D%5Bdata%5D=&columns%5B9%5D%5Bname%5D=&columns%5B9%5D%5Bsearchable%5D=true&columns%5B9%5D%5Borderable%5D=true&columns%5B9%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B9%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B10%5D%5Bdata%5D=crmstate&columns%5B10%5D%5Bname%5D=&columns%5B10%5D%5Bsearchable%5D=true&columns%5B10%5D%5Borderable%5D=true&columns%5B10%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B10%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B11%5D%5Bdata%5D=welcome_email&columns%5B11%5D%5Bname%5D=&columns%5B11%5D%5Bsearchable%5D=true&columns%5B11%5D%5Borderable%5D=true&columns%5B11%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B11%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B12%5D%5Bdata%5D=user_id&columns%5B12%5D%5Bname%5D=&columns%5B12%5D%5Bsearchable%5D=true&columns%5B12%5D%5Borderable%5D=true&columns%5B12%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B12%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B13%5D%5Bdata%5D=&columns%5B13%5D%5Bname%5D=&columns%5B13%5D%5Bsearchable%5D=true&columns%5B13%5D%5Borderable%5D=true&columns%5B13%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B13%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=2&order%5B0%5D%5Bdir%5D=asc&start=0&length=10&search%5Bvalue%5D=&search%5Bregex%5D=false&_=1426180688420

有时可能随机给出:

{
    "error": {
        "type": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
        "message": "",
        "file": "path\\to\\application\\vendor\\laravel\\framework\\src\\Illuminate\\Routing\\RouteCollection.php",
        "line": 148
    }
}

更奇怪的是,使用路线而不使用任何查询字符串,总是有效。

我还注意到的一点是,如果我尝试解码网址并使用它,它会自动强制我退出网站,让我退出。

以下是问题:

  • 如何解决此问题?
  • 为什么查询字符串会出现问题?
  • 为什么使用解码后的URL会强制我退出?

0 个答案:

没有答案