我得到了这个Laravel 4问题让我很困惑。我在同一个控制器上创建了这两个方法。声明控制器是宁静的。 ajax请求来自不同的域。
不起作用
public function getOwnlist(){
$test = User::with(array("images", "images.category"))->find(Auth::user()->id);
return Response::json($test, 200, array('Access-Control-Allow-Origin' => '*'));
}
作品
public function getLatest(){
$images = DB::table("images")->where("public","=","1")->orderBy("created_at")->take(10)->get();
return Response::json($images, 200, array('Access-Control-Allow-Origin' => '*'));
}
浏览器获得标准的跨域错误。
答案 0 :(得分:3)
这个例子对我有用,你可以试试这个。
public function getOwnlist(){
$images = User::with('images.category')->find(Auth::getUser()->getAttribute('id'));
return Response::json($images, 200, array('Access-Control-Allow-Origin' => '*'));
}
另外,我强烈建议在Controller Base的构造函数上设置它们,而不是在每个响应中设置标题。或者,您只能创建一个API来提供API并从中扩展。
应该是这样的:
protected $response; // This is a global variable on you BaseController
// This goes on your BaseController constructor
$this->response = Response::make();
$this->response->headers->add(array('Access-Control-Allow-Origin', '*');
我在使用jQuery时发现了跨域AJAX的一些问题,如果我指定域而不是*
,它只对我有用。
有关雄辩模型的更多信息: http://laravel.com/docs/eloquent#querying-relations