Php Laravel 4(“数据表”)路由间歇性工作

Php Laravel 4(“数据表”)路由间歇性工作,php,jquery,ajax,laravel-4,datatable,Php,Jquery,Ajax,Laravel 4,Datatable,我正在使用数据表来显示大量的行,因此我决定使用服务器端处理。我在后端与Laravel 4合作 这个问题很奇怪 每次我刷新表所在的页面时,对服务器的AJAX请求都会工作,但是如果我重放相同的XHR请求(使用Google开发工具),甚至只是执行任何其他操作(例如排序、搜索),路由可能不会工作(请注意,我使用了MAY,因为它确实是随机的) 这是路线: Route::group(['before'=>'auth','prefix'=>'api'],function()) { 路由::获取('公告','A

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

这个问题很奇怪

每次我刷新表所在的页面时,对服务器的AJAX请求都会工作,但是如果我重放相同的XHR请求(使用Google开发工具),甚至只是执行任何其他操作(例如排序、搜索),路由可能不会工作(请注意,我使用了MAY,因为它确实是随机的)

这是路线:

Route::group(['before'=>'auth','prefix'=>'api'],function())
{
路由::获取('公告','AnnouncementsAPIController@getAnnouncements');
});
这是控制器:

类公告SAPIController扩展BaseController{
公共功能公告()
{
$querys=$this->request->query('querys');
$office=(isset($querys['office'])==true)
?Office::find(preg_replace(“/[^0-9]/”,“,$querys['Office']))
:Office::find(Auth::user()->Office->id);
$builder=$office->announcements();
$columns=[
'announcements.id',
'通知.提取器任务id',
'通知.用户id',
“公告.办公室id”,
“通知。电话状态”,
“公告.电话召回”,
'公告.已创建于',
'公告.名称',
'公告.电话',
'公告.日期',
“公告.商标”,
“公告.模型”,
"公告.价格",,
"公告.城市",,
"公告,公里",,
'公告.crmstate',
'通知。提取器\u更新\u在'
];
$announcements=Datatablefy::prepare($builder,'Announcement',['columns'=>$columns],Input::all());
$announcements=$announcements->datatablefy();
返回$announcements->make(true);
}
}
这是Datatables生成的URL示例:

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并使用它,它会自动迫使我退出网站,让我注销

以下是问题:

  • 我如何解决这个问题
  • 为什么查询字符串会给出问题
  • 为什么使用解码的URL会迫使我注销

触发完全相同的查询字符串有时会引发错误吗?还是只是一些查询字符串?如果你能找出哪一个是正确的,那将会有很大的不同。我的猜测是特定查询字符串中的某个组合正在破坏路由过程。您应该看看是否可以找到一个总是中断的特定字符串-然后我们可以从那里调试它…@shift-exchange有时有效,有时无效,因此我无法真正调试哪个查询字符串出现问题。您需要记录所有查询,直到找到哪些查询中断。否则这里就没有人能帮忙了,不幸的是…@TheShiftExchange问题是没有一个特定的查询会破坏它。这是非常随机的。一开始有效的查询可能无法在第二时间工作,而一开始不起作用的查询可能在第二时间工作。这很奇怪。奇怪的是,环境发生了变化,问题不再发生了。什么可能导致此问题?