我正在使用漂亮的汤来抓取网页以获取一些信息。我有一个用户在到达我网站的主页时键入他们的邮政编码,并向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
时,我已经读到使用全局变量有点不受欢迎。我不知道另一种使用响应数据的方法。有一个更好的方法吗?感谢。
答案 0 :(得分:0)
不,这不是在函数之间传递数据的好方法。 Globals永远不会。
您应该将逻辑封装在某个对象/函数中并将值传递给它。 在此示例中,您应该:
// I would suggest wrapping the $.post
$.post('/search', data, function(response){
renderElements(response);
});
更好的方法(但更难)是构建一个Renderer元素并执行以下操作:
var renderer = new Renderer(response);
renderer.render();