【发布时间】:2015-09-13 14:44:00
【问题描述】:
我通过 jQuery AJAX 调用 Symfony 操作,但是其中一个操作返回 404,我不知道为什么。
情景。
在线系统托管项目列表,这些项目可以添加到本地系统。
用户按 Id 搜索,如果存在具有该 Id 的项目并且他们尚未添加该项目,则该项目将被添加到他们的本地系统中。
javascript
//CHECK IF EXTERNAL PROJECT CAN BE IMPORTED
$.get("/find-project/" + Id, function( data ) { << THIS ONE IS GOOD
if(data['status'] === false){
//PROJECT WITH THAT ID NOT FOUND
}else{
//PROJECT WITH THAT ID EXISTS
// HAVE YOU ALREADY ADDED THAT PROJECT
$.get("/check-project/" + Id, function(data){ << THIS RETURNS 404
if(data === false){
//PROJECT HAS NOT BEEN ADDED.. ADD IT
}else{
//PROJECT HAS ALREADY BEEN ADDED
}
})
}
});
Symfony 控制器 PHP
/**
* @Route("/find-project/{Id}", name="_findProject")
* @Method({"GET"})
*/
public function findProjectByIdAction($Id)
{
$project = $this->get('crm')->findProjectById($Id);
$status = $project ? true : false;
return new JsonResponse(array('status' => $status, 'project' => $project));
}
/**
* @Route("/check-project/{Id}", name="_checkProject")
* @Method({"GET"})
*/
//这个函数找不到404
public function checkIfProjectExistsAction($Id){
$query = $this->getDoctrine()->getRepository('AppBundle:Project')->findOneBy(array('Id' => $Id));
$cnt = count($query->getResult());
$cnt == 0 ? $status = false : $status = true ;
return new JsonResponse(array('status' => $status));
}
已经检查过; 站点是来自路由的可用路由:控制台中的调试
请求返回为
远程地址:127.0.0.1:443 请求网址:https://localhost/check-project/12345 请求方法:GET 状态码:404 未找到
非常感谢任何帮助
【问题讨论】:
-
由于您使用的是生产环境,您是否清除了缓存以使用当前路由更新它?试试localhost/app_dev.php/check-project/12345
-
你不应该先
->getManager()->getRepository()吗? -
1.清除生产环境中的缓存
rm -rf app/cache/*2. 检查 javascript 中Id变量的范围,可能它是本地的,并且您正在使用undefined发送 ajax 调用 -
非常感谢大家,原来是缓存问题。