2016-08-30 2 views
4

제발 내가 어제부터 붙어있어 도움이 필요해. 문제는 내가 numberInput을 얻었 어. 나는 사용자의 구독 번호를 선택할 수 있도록 jquery 자동 완성을 사용한다. . 해당 번호를 통해 사용자의 전체 이름을 가져 와서 나뭇 가지에 표시하고 싶습니다. I는 JS 함수 getInfoOfInput() 내 입력이 변경되면, 이러한 I 사용하는 JS 함수이다 부르고 :JS에서 컨트롤러로 함수를 보내고 함수에서 결과를 얻으십시오.

/** 
* get fullName 
* @Secure(roles="ROLE_ADMIN") 
* @Route("/recupFullName/") 
* @param Request $request La requête ajax qui envoie le numAd 
* @return Response $fullnam 
*/ 
public function getNomEtPrenomTutore($request){ 
    $em = $this->getDoctrine()->getManager(); 
    $tutoRepo = $em->getRepository(Tutore::class); 
    if ($request->isXmlHttpRequest()) { 
     $numTutore = $request->request->get('tutoreSelectionne'); 
     $tutore = $tutoRepo->findOneBy(['username' => $numTutore]); 
     $nom = $tutore->getNom(); 
     $prenom = $tutore->getPrenom(); 
     $fullName = "$nom $prenom"; 
     return $this->render("PACESStatistiqueBundle:Default:index.html.twig", array('fullName'=>$fullName)); 
    } 
} 

PS : 이것은 내 컨트롤러의 기능은

function getInfoOfInput() 
    { 
     var tutoreSelectionne = document.getElementById("numAdherent"); 
     var tutore = tutoreSelectionne.value; 
     //alert(tutoreSelectionne.value); 
     recupName(tutore); 

    } 
    function recupName(tutoreSelectionne) { 
     var DATA = {tutoreSelectionne: tutoreSelectionne}; 
     var request = $.ajax({ 
      type: "POST", 
      url: "{{ path('paces_statistique_default_getnometprenomtutore') }}", 
      data: DATA, 
      success: function(data){ 
       $('#name').html(data); 
      } 
     }); 
     return false; 

    } 

'username'은 사용자의 서브 스크립 션 번호입니다. ^^ 사용하는 것이 좋은 이름이 아닙니다.

나뭇 가지에 내 입력 :

<div class="ui-autocomplete-input"> 
<input type="number" id="numAdherent" value="" onchange="getInfoOfInput();" onkeyup="this.onchange();" oninput="this.onchange();" onautocomplete="this.onchange();"> 
</div> 

가 나는 이것이 내가 함께 JS에서 얻을 오류가

// INPUT VALUE OVERRIDE 
    $(function() { 

     {% if is_granted('ROLE_ADMIN') %} 
     $('td input[id^=numAdherent]').each(
       function(){ 
        $(this).on("change paste keyup", function() 
        {$(this).attr('value', $(this).val())}) 
       } 
     ); 
     {% endif %} 


    }); 

을 변경할 때 입력 값을 덮어 쓸 "검사 요소 "

jquery-1.11.3.min.js:5 POST http://localhost:8000/recupFullName/ 500(Internal Server Error) 
send @ jquery-1.11.3.min.js:5 
ajax @ jquery-1.11.3.min.js:5 
recupName @ vueStatistique:231 
getInfoOfInput @ vueStatistique:226 
onchange @ vueStatistique:276 
oninput @ vueStatistique:276 

가 사전에 어떤 도움을 주셔서 감사합니다 당신은 저를 줄 수 :)

답변

2

내부 서버 오류는 일반적으로 컨트롤러 동작에 문제가 있다는 것을 의미합니다.

$tutore = $tutoRepo->findOneBy(['username' => $numTutore]); 

이 줄이 문제 일 수 있습니다. 나에게있어서 username는 숫자처럼 들리지 않는다. 이 줄이 정말로 맞습니까?

편집 : 변경

public function getNomEtPrenomTutore($request){ 

public function getNomEtPrenomTutore(Request $request){ 

과 실제로 Request 클래스를 가져올 수 있는지 확인하십시오 는 오류 메시지를 확인한 후, 여기에 솔루션입니다.

+0

예, 이상하게 들리지만 사용자 이름은 사용자 가입 번호 – Uness

+0

입니다.이 경우 브라우저 디버그 도구를 사용하여 오류 메시지의 내용을 찾아 보시기 바랍니다. 이렇게하려면 다음을 수행하십시오 (적어도 크롬에서는 FF가 유사해야 함). F12 키를 눌러 디버그 도구를 엽니 다. 네트워크 탭으로 전환하십시오. 그 후에 ajax 호출을 시작하십시오. 왼쪽 목록에 새 항목이 표시됩니다. 해당 항목의'Preview' 탭에서 html로 렌더링 된 서버 응답 (오류 메시지라고도 함)을 확인하십시오. –

+0

컨트롤러 "EnhanceProxy62db1e3f_856e7bba52f64f2dfd7076a0fac10a57e3836e6f \ __ CG __ \ PACES \ StatistiqueBundle \ Controller \ DefaultController :: getNomEtPrenomTutore()"는 기본값이 없기 때문에 또는 "$ request"인수에 값을 제공해야합니다. 하나). – Uness

관련 문제