2017-04-03 9 views
1

私は自分のフォームの中で簡単なAjax呼び出しを設定しています。ユーザーがフィールドに文字を入力すると、以下のAjax呼び出しが起動し、次のコントローラのアクションにアクセスするためのものですSymfony 3 Ajaxコールルーティングの問題

self.modify = function (input_field) { 
    if ($(input_field).val().length > 5) { 
     $.post("{{path('get_bio_control_sample')}}", {sample_number: $(input_field).val()}, 
      function (response) { 
       if (response.code == 100 && response.success) { 
        alert(response.sample_number); 
       } 
      }, "json"); 
    } 
}; 

:しかし

class BioControlController extends Controller { 
    /** 
    * @Route("/bio_control/sample", name="get_bio_control_sample") 
    */ 
    public function getBioControlSampleAction(Request $request){ 

     $sample_number = $request->query->get('sample_number'); 

     $response = array("code" => 100, "success" => true, "sample_number" => $sample_number, "sample_data" => "test"); 

     return new JsonResponse($response); 
    } 
} 

は、コールがアクティブになったときJSを返しますエラー:

http://127.0.0.1:8000/omics_experiment/%7B%7Bpath('get_bio_control_sample')%7D%7D 404 (Not Found) 

私は(OmicsExperimentControllerである)omics_experiment/newからAjax呼び出しにアクセスし、ルート/bio_control/sampleを使用しています(のように注釈で示されている)、それは機能していません。誰かが私が間違っていることを説明することはできますか?

私はthis質問をテンプレートとして使用しましたが、私がSymfony 3を使用しているという事実は、構文上の誤りがある可能性があります。

答えて

1

私は最近これをやっていました。私はSymfonyの専門家でもありませんが、私はこれをして以来、私は助けることができるかもしれません。 symfonyを使用することは、静的なURLで行うこととはまったく異なりません。主なことは、コントローラとルートが正しく設定され、AJAXなしで動作することを確認することです。次に、.post呼び出しのためにルートに設定されたパスを使用するだけです。

さらに悪いことに、このタイプの相互作用をテストすることは本当に難しいです。あなたの小枝が含まれていても、それが間違って設定されていると失敗する可能性があります。

あなたのコードをもう一度見てください。は、と思われます。これは問題の可能性があります。私はそれが小枝テンプレートを行うようにsymfonyはあなたのjQueryのファイルを見ていないので、もしあなたがそれを持っている方法は、小枝テンプレートの唯一良いと思いますので、この

$.post("/bio_control/sample", {sample_number: 

にこの

$.post("{{path('get_bio_control_sample')}}", {sample_number: 

を変更その後、ルートを取得する方法を理解するつもりはありません。

+1

ありがとう、それは完璧に働いた! – Darkstarone

+0

素晴らしい!お役に立てて嬉しいです! – garek007

関連する問題