2017-02-12 4 views
-2

Ich möchte eine Liste der Benutzer dynamisch anzeigen, aber es funktioniert nicht. Ich testete die Abfrage selbst und es funktioniert gut, aber es zeigt immer noch nichts. Dies ist das SkriptAjax mit 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> 

Dies ist die Controller-Aktion:

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 
} 

und dies ist die Abfrage

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

Überprüfen Sie bitte Ihre Apache/Nginx/PHP Logs auf Fehler. –

+0

Ich weiß nicht wovon du sprichst. Ich arbeite mit phpMyAdmin auf dem Wamp-Server. Ich habe die Abfrage getestet und das korrekte Ergebnis zurückgegeben @michail_w –

Antwort

0

Ihre Anfrage nicht korrekt ist. Sie müssen den $ Projektnamen wie so verketten:

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(); 
} 

Ich bin mir nicht sicher, ob das alles reparieren, aber zumindest wird es die Abfrage ordnungsgemäß funktioniert bekommen.

+0

Die SQL-Injektion zu halten ist eine ziemlich schlechte Idee. –

+0

Was meinst du mit @AlainTiemblo? Können Sie weitere Details hinzufügen? –

+0

Sicher. 'UND p.name = '". $ ProjectName. "'" '. Was passiert, wenn ich' 'ODER 1 - ' –

0

Ich bin nicht sehr klar, Ihr Problem, aber siehe oben Freund sagte, es gab ein Problem in Ihrer Abfrage, so denke ich, können Sie den Controller setzen, die Abfrage Breakpoint-Debugging. Dann die Fehlerpräzisions-Verriegelungsposition. Ich habe den Gedankengang, um das Problem zu lösen, so häufig.