2017-02-12 1 views
-2

동적으로 사용자 목록을 표시하고 싶지만 작동하지 않습니다. 나는 그 자체로 질의를 테스트했고 그것은 잘 작동하지만 아직 아무것도 표시하지 않는다. 이것은이 컨트롤러 액션입니다 스크립트Ajax with Symfony3

<script> 
    function showUser() { 
       // code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp = new XMLHttpRequest(); 

      xmlhttp.onreadystatechange = function() { 
       if (this.readyState == 4 && this.status == 200) { 
        document.getElementById("user-list-div").innerHTML = xmlhttp.responseText; 
       } 
      }; 
      xmlhttp.open("GET","{{ path('ajax_update')}}",true); 
      xmlhttp.send(); 
     } 
</script> 

입니다 :

public function searchUsersAction(Request $request) 
{ 
    /*$em = $this->getDoctrine()->getManager(); 
    $request = $this->get('request');*/ 
    $projectName = $request->get('projectName'); 
    echo($projectName); 
    //$projectId=$this->getDoctrine()->getRepository('SocialProMeetingBundle:meetingUser')->findName($projectName); 
    //echo(count($projectId)); 
    //foreach($projectId as $pId) { 
     //$projectId->getPId(); 
     $pus = $this->getDoctrine()->getRepository('SocialProMeetingBundle:meetingUser')->findProjectUsers($projectName); 
    //} 
    $response = "<select class=\"select2_multiple form-control\" multiple=\"multiple\">"; 
    foreach($pus as $user){ 
     $response . "<option>" . $user . "</option>"; 
    } 
    $response = $response."</select> "; 
    return new Response($response); 
    //return($pus); 
    //call repository function 
} 

이것은

public function findProjectUsers($projectName){ 
    $query=$this->getEntityManager() 
     ->createQuery(
      "SELECT u.firstName FROM SocialProDefaultBundle:User u, SocialProProjectBundle:Project p, SocialProProjectBundle:ProjectUser pu WHERE u.id = pu.user AND p.id=pu.project AND p.name='$projectName'"); 
    return $query->getResult(); 
} 
+0

Apache/Nginx/PHP 로그에서 오류를 확인하십시오. –

+0

나는 당신이 무슨 말을하는지 모른다. 나는 wamp 서버에서 phpMyAdmin으로 일하고있다. 쿼리를 테스트 한 결과 올바른 결과를 반환했습니다. @michail_w –

답변

0

귀하의 쿼리가 잘못된 쿼리입니다. 다음과 같이 $ projectName을 연결해야합니다.

public function findProjectUsers($projectName){ 
    $query=$this->getEntityManager() 
     ->createQuery(
      "SELECT u.firstName 
       FROM SocialProDefaultBundle:User u, 
       SocialProProjectBundle:Project p, 
       SocialProProjectBundle:ProjectUser pu 
       WHERE u.id = pu.user AND p.id=pu.project AND p.name=:name" 
     )->setParameter('name', $projectName); 
    return $query->getResult(); 
} 

모든 것이 수정되지만 최소한 쿼리가 올바르게 작동하는지 확실하지 않습니다.

+0

SQL 주입을 유지하는 것은 좋은 생각입니다. –

+0

@AlainTiemblo 무엇을 의미합니까? 자세한 내용을 추가 할 수 있습니까? –

+0

예. 'AND p.name =' ". $ projectName." ' "'."OR 1 --'을 입력하면 어떻게 되나요? –

0

나는 당신의 문제를 분명히하지는 않지만 이층 친구가 당신의 질문에 문제가 있다고 말했다. 그래서 나는 컨트롤러를 넣을 수 있다고 생각한다. 질문은 디버깅 디버깅을한다. 그런 다음 오류 정밀도가 위치를 고정시킵니다. 나는 문제를 해결하기위한 생각의 기차가 너무 일반적이다.