【发布时间】:2013-07-03 12:26:11
【问题描述】:
我为laravel.dev/test 注册了GET 路由。路由对应的控制器会区分请求是否为ajax。
当我在浏览器上输入 laravel.dev/test 时,Laravel 检测到它不是 ajax 请求并使用 return View::make() 生成页面。然后页面上的Backbone.js 代码向laravel.dev/test 发出ajax 请求,Laravel 使用return Response::json 返回一个JSON。
这一切都很好,直到我尝试离开页面然后使用浏览器按钮导航回 laravel.dev/test 它打印出 json 作为响应,这不是我所期望的,因为我不是发出 ajax 请求。
【问题讨论】:
-
我猜你没有先发出 ajax 请求,然后是“正常”请求,然后单击后退按钮?您如何检测普通请求和 ajax 请求之间的差异?并进行调试,在意外的 ajax 响应中打印发送的标头:)
-
Request::ajax()可用于测试 ajax 请求。意外的标头:Request URL:http://laravel.dev/test Request Method:GET Status Code:200 OK (from cache) -
听起来像是缓存问题。使用浏览器的开发工具来查看是否确实发出了请求并将 json 作为响应,或者是否从缓存中获取。编辑:现在我们知道这是一个缓存问题。
-
@Alex-Info.net 我拍了一张 chrome 开发工具的照片:i.imgur.com/N7uBb3v.png