通过GET更新对象值而无需重复

时间:2018-06-13 03:00:41

标签: javascript jquery ajax

我正在制作一个平台,它有一个包含多个对象的脚本,如下所示:

View.VISIBLE

我更新每个via var plano_basicoUS = { 1: null, // monthly 2: null, // quarterly 3: null, // semester 4: null, // yearly }; var plano_economicoUS = { 1: null, // monthly 2: null, // quarterly 3: null, // semester 4: null, // yearly }; 的值,如下所示:

$.get

$.get("buscar_valor.php?id=3&periodicidade=monthly", function(resultado){ plano_basicoUS[1] = parseFloat(resultado); }); $.get("buscar_valor.php?id=3&periodicidade=quarterly", function(resultado){ plano_basicoUS[2] = parseFloat(resultado); }); $.get("buscar_valor.php?id=3&periodicidade=semiannually", function(resultado){ plano_basicoUS[3] = parseFloat(resultado); }); $.get("buscar_valor.php?id=3&periodicidade=annually", function(resultado){ plano_basicoUS[4] = parseFloat(resultado); }); $.get("buscar_valor.php?id=4&periodicidade=monthly", function(resultado){ plano_economicoUS[1] = parseFloat(resultado); }); $.get("buscar_valor.php?id=4&periodicidade=quarterly", function(resultado){ plano_economicoUS[2] = parseFloat(resultado); }); $.get("buscar_valor.php?id=4&periodicidade=semiannually", function(resultado){ plano_economicoUS[3] = parseFloat(resultado); }); $.get("buscar_valor.php?id=4&periodicidade=annually", function(resultado){ plano_economicoUS[4] = parseFloat(resultado); }); 的每个查询都会通过PHP文件返回一个值,如: 10.00

由于有几个对象,我不想为每个对象重复获取。

如何动态执行此操作,并指出每个$.get都有不同的网址?或顺序,如果是这样的话。

2 个答案:

答案 0 :(得分:0)

理想情况下,您应该避免为每个数据发送1个呼叫。您应该发送1个调用并获取所有数据,然后填充对象中的信息,而不是这个。

如果无法做到这一点,那么您可以采用jQuery.when

的替代方法
$.when($.get("buscar_valor.php?id=3&periodicidade=monthly"), 
    $.get("buscar_valor.php?id=3&periodicidade=quarterly"),
    $.get("buscar_valor.php?id=3&periodicidade=semiannually"),
    $.get("buscar_valor.php?id=3&periodicidade=annually"),
    $.get("buscar_valor.php?id=4&periodicidade=monthly"),
    $.get("buscar_valor.php?id=4&periodicidade=quarterly"),
    $.get("buscar_valor.php?id=4&periodicidade=semiannually"),
    $.get("buscar_valor.php?id=4&periodicidade=annually")).then(function(){
  plano_basicoUS[1] = parseFloat(arguments[0]);
  plano_basicoUS[2] = parseFloat(arguments[1]);
  plano_basicoUS[3] = parseFloat(arguments[2]);
  plano_basicoUS[4] = parseFloat(arguments[3]);
  plano_economicoUS[1] = parseFloat(arguments[4]);
  plano_economicoUS[2] = parseFloat(arguments[5]);
  plano_economicoUS[3] = parseFloat(arguments[6]);
  plano_economicoUS[4] = parseFloat(arguments[7]);
});

答案 1 :(得分:0)

您可以编写包含公共部分的函数。类似的东西:

const timescales = ["monthly","quarterly","semester","yearly"];

function getNumberByTimescale(timescale, index) {
  $.get("buscar_valor.php?id=4&periodicidade=" + timescale, function(resultado){
    plano_economicoUS[index] = parseFloat(resultado);
  });
}

for (var i = 0; i < timescales.length; i++) {
  getNumberByTimescale(timescales[i], i + 1); // Adding one to match timescales array index with your arrays' keys.
}

这只是你可以做到这一点的一种方式,但重要的是将重复的工作抽象为功能。