2017-02-12 9 views
-2

Я хочу динамически отображать список пользователей, но он не работает. Я протестировал запрос сам по себе, и он работает отлично, но он все еще ничего не показывает. Это скриптAjax с 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

Я не знаю, о чем вы говорите. Я работаю с phpMyAdmin на сервере Wamp. Я протестировал запрос, и он вернул правильный результат. @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

Я не очень понимаю вашу проблему, но, увидев, что друг наверх сказал, что в вашем запросе есть проблема, я думаю, вы можете поставить контроллер, запрос отлаживает точку останова. Затем прецизионную точность зафиксировать положение. Я, как правило, решает эту проблему.