javascript - 获取可用于 JQuery/javascript 中所有范围的 JSON 数据
问题描述
使用 JQuery,我通过 json 调用加载一组邮政编码数据,该调用在文档加载时加载一次以填充选项选择。我可以在一个函数中做到这一点,这很好。
但是,每次用户在选择中选择不同的邮政编码时,都会触发代码(通过 .change),并且我需要再次加载(相当大的)相同的 json 数据以填充一些不同的字段。
因为第一次调用包含在回调函数中,所以数据永远不会超出该范围,并且不能再次重用。
如果有人更改项目 100 次,那就是加载数据的 100 次,这看起来既浪费又缓慢。
有什么方法可以调用该数据一次,并使其可用于全局/更广泛的范围,以便 .change 函数可以访问它?
编辑这是代码:
$(document).ready(function() {
GetPostcodes();
$("#postcodes").change(function() {
console.log("Selection Changed to " + $(this).val());
});
});
function GetPostcodes() {
$.getJSON("population.json", function(cases) {
var filtercases = $(cases).filter(function(i, n) {
return n.POA_NAME16 >= "2450" && n.POA_NAME16 <= "2489"
});
var postcodes = [];
$.each(filtercases, function(i, n) {
postcodes.push(n);
});
postcodes = postcodes.unique();
postcodes = postcodes.sort();
var options = [];
for (var i = 0; i < postcodes.length; i++) {
options.push('<option value="',
postcodes[i].POA_NAME16, '">',
postcodes[i].POA_NAME16, '</option>');
}
$("#postcodes").html(options.join(''));
});
}
这是 JSON 的样子:
{
"POA_NAME16": 2000,
"Combined": "BARANGAROO,DARLING HARBOUR,,DAWES POINT,HAYMARKET,MILLERS POINT,PARLIAMENT HOUSE,SYDNEY,SYDNEY SOUTH,THE ROCKS",
"Tot_p_p": 27411
},
{
"POA_NAME16": 2006,
"Combined": "THE UNIVERSITY OF SYDNEY",
"Tot_p_p": 1259
},
因此,虽然我只在第一次调用中使用邮政编码数据来填充下拉框,但我希望能够访问触发 .change 属性以显示其他信息的所有信息。
干杯
解决方案
我认为问题来了,我试图这样做:
GetPostcodes();
console.log(the global variable I set)
这是行不通的。
但是,如果我在另一个事件之前不引用该全局变量,那么一切都在那里并且正在工作 - 所以虽然我已经有了答案 - 你的帮助促使我进一步研究。干杯:P
推荐阅读
- html - Show base64-image from WebApi on HTML-Page
- gcloud - Gcloud Run - 查找最新版本的名称
- mysql - TypeORM / MySQL - QueryFailedError: Unknown column 'NaN' in 'where clause'
- javascript - 如果内容不同,则重定向网站
- python - Adding nn.Dropout2d after each conv layer of a pretrained VGG model
- c# - Immutable vs Concurrent Collections
- c++ - 有什么方法可以做部分专业化?
- python - pandas - 在具有列条件的数据帧之间交换行
- kubernetes - 在什么用例中 kubectl --api-version 选项有帮助
- python - Plotly add_trace 更改 y_axis 范围和间距 - Python