0

我正在使用漂亮的汤来抓取网页以获取一些信息。我有一个用户在到达我网站的主页时输入了他们的邮政编码,并向 Django 发送了一个 AJAX 请求,以根据用户输入获取一些数据。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 回答