5

小枝テンプレート内でjquery変数を使用してajaxで送信しようとしていますが、小枝内のjquery変数にアクセスできません:

私のコードは次のとおりです。

<script type="text/javascript">
            jQuery(document).ready(function(){


                jQuery("#my_input").change(function(){

                    var value = jQuery("#my_input").val();

                    jQuery.ajax({

                        url: "{{ path('ParteAccidentes_ajax', {'emergencia': value}) }}",
                        timeout: 5000,
                        success: function(data) { 
                           alert('ok');
                        },
                        error: function() { 
                            alert('mal');
                        }
                    });

                });

            });  
        </script>

エラー表示は、変数値が存在しないことです (「url:...」行に)

ありがとう!

4

2 に答える 2

10

問題は、Twig が JavaScript よりも先に起動され、変数「id_emergencia」が Twig によって認識されないことです。あなたはトリックをすることができます。パラメータとして文字列を配置し、JavaScript コードで文字列を変数の値に置き換えることができます。このようにして、AJAX 請願が開始される前に常に正しい URL を取得できます。

次のようなことができます。

<script type="text/javascript">
            jQuery(document).ready(function(){

                jQuery("#my_input").change(function(){
                    
                    var value = jQuery("#my_input").val();
                    var url = "{{ path('ParteAccidentes_ajax', {'emergencia': 'text'}) }}";
                    url = url.replace("text", value);
                                        
                    jQuery.ajax({
                        
                        url: url,
                        timeout: 5000,
                        success: function(data) { 
                           alert ('ok');
                        },
                        error: function() { alert ('mal');
                        }
                    });

                });

            });  
        </script>
于 2013-05-16T09:56:56.710 に答える
2

もちろん存在しません。

value変数は、Twig の単なるプレーン テキストです。覚えて:

最初に Twig パーツがレンダリングされ、次にブラウザに出力され、次にブラウザがコンテンツをレンダリングして Javascript を実行します。

この行は、イベントが JavaScript として解析される{{ path('ParteAccidentes_ajax', {'emergencia': value}) }}前に実行されます。value

また、イベント ハンドラーでこれを行っています。

小枝は(単なるPHPライブラリであるため)実行されたJavaScriptイベントのパスURLをどのように変更する必要がありますか?

symfony パスと javascript 変数に基づいて URL を更新したいだけなので、このバンドルを見てください: https://github.com/FriendsOfSymfony/FOSJsRoutingBundle

必要な機能を正確に提供します。

于 2013-05-16T09:54:59.073 に答える