0

美しいスープを使用して、Web ページから情報を収集しています。サイトのメイン ページに到達するときに郵便番号を入力するユーザーがいて、AJAX 要求を Django に送信して、ユーザー入力に基づいてデータを取得しています。JavaScript でのコードは次のようになります。

$(document).ready(function(){
    $('#search').on('click', function(){
        zip = $('#zip').val();
        data = {
            zip: zip
        }
        $.post('/search', data, function(response){
            places = response
            // some Mustache code to render different elements
        });
    });

    $('body').on('click', '.show-place', function(){
        place_id = Number($(this).attr('id'));
        place = places[place_id];
}

これが最善の方法ですか?成功関数を設定places = responseしたとき、グローバル変数の使用は嫌われていると読んだことがあります。ただし、応答データを使用する別の方法はわかりません。これを行うより良い方法はありますか?ありがとう。

4

1 に答える 1

0

いいえ、それは関数間でデータを渡す良い方法ではありません。グローバルは決してそうではありません。

ロジックをオブジェクト/関数にカプセル化し、それに値を渡す必要があります。この例では、次のことを行う必要があります。

     // I would suggest wrapping the $.post
    $.post('/search', data, function(response){
        renderElements(response);
    });

さらに良い方法 (ただし、はるかに難しい) は、Renderer 要素を構築し、次のようなことを行うことです。

       var renderer = new Renderer(response);
       renderer.render();
于 2013-11-06T03:16:29.963 に答える