0

JavaScript で取得したいくつかの引数をコントローラーのメソッドに渡す必要があるときに、AJAX/S2 に混乱しています。

私のスクリプトでは、ある時点で位置変数を取得します。

function handle_geolocation_query(position){ 

    alert('Lat: ' + position.coords.latitude + ' ' +  
          'Lon: ' + position.coords.longitude);


    $.when( getLakes(position.coords.latitude, position.coords.longitude)).done(function(result1) {
        console.log(result1);
    });

};

function getLakes(lat, long) {
    return $.ajax({
            url: "{{ path('getLakes') }}",
            data: { lat:lat, lng: lng },
            dataType: 'jsonp'
        });
};

次に、ルーターをそのように設定します。

getLakes:
    pattern:  /lakes
    defaults: { _controller: PondipGeolocBundle:Default:getLakesSurrounding }

そして、私のコントローラーでは、配列を返すことになっています:

public function getLakesSurrounding($lat=0, $lng=0, $limit = 50, $distance = 50, $unit = 'km')
    {

            $lat = $this->getRequest()->get('lat'); 
    $lng = $this->getRequest()->get('lont');

        $return= array( '1'=>   array(  'title' => 'lake1',
                                        'venue' => 'lake2',
                                        'dist' => 'lake3',
                                        'species' => 'lake4',
                                        'stock' => 'lake4'),

                        '2'=>   array(  'title' => 'lake1',
                                        'venue' => 'lake2',
                                        'dist' => 'lake3',
                                        'species' => 'lake4',
                                        'stock' => 'lake4'),

                        '3'=>   array(  'title' => 'lake1',
                                        'venue' => 'lake2',
                                        'dist' => 'lake3',
                                        'species' => 'lake4',
                                        'stock' => 'lake4'),

                        '4'=>   array(  'title' => 'lake1',
                                        'venue' => 'lake2',
                                        'dist' => 'lake3',
                                        'species' => 'lake4', 
                                        'stock' => 'lake4'),

                        '5'=>   array(  'title' => 'lake1',
                                        'venue' => 'lake2',
                                        'dist' => 'lake3',
                                        'species' => 'lake4',
                                        'stock' => 'lake4')
                        );


        $return=json_encode($return); //jscon encode the array
        return new Response($return,200,array('Content-Type'=>'application/json')); //make sure it has the correct content type

    }

そして、それを別の関数に渡して、テンプレートを口ひげで設定してビューに印刷したいと思います(私はまだここにいません..)

私の質問は: 必要な緯度と経度のデータを関数に渡すことができません。ルーターがおかしくなり、コントローラーが何も得られず、そのスクリプトから何も得られません。編集:変数を渡す方法を見つけましたが、コントローラーから応答が得られず、何も起こらず、$.when はコールバックを実行しません。

私はAJAXにかなり慣れていないので、アドバイスしてください。

4

1 に答える 1

1

FOSJsRoutingBundleを見てください。それを使用すると、JS からルーターを使用できます。

Routing.generate('my_route_to_expose', { "id": 10, "foo": "bar" });
于 2013-03-15T00:03:10.650 に答える