2016-08-30 7 views
4

私は昨日以来これに固執しています。問題は私がnumberInputを取得したことです。ユーザーの購読番号を選択するのに役立つjqueryオートコンプリートを使用します。 。 その番号を使用して、ユーザーのフルネームを取得し、それを小枝に表示したいと考えています。 私は私の入力が変更されると、これらは私が使用してJSの関数である)JS機能getInfoOfInputを(呼び出しています:JSからのデータをコントローラ内の関数に送信し、関数から結果を取得する

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; 

    } 

これは私のコントローラ内の関数である:

/** 
* 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: '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"引数の値を指定する必要があります。 1)。 – Uness

関連する問題