Обновить значения объекта через GET без повторения - PullRequest
0 голосов
/ 13 июня 2018

Я работаю над плоской таблицей, в которой есть скрипт с несколькими объектами, например:

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);
});

Каждый запрос $.get возвращает значение, например: 10.00 , через файл PHP.

Поскольку существует несколько объектов, я не хотел бы повторятьполучает для каждого.

Как я могу сделать это динамически, отмечая, что каждый $.get имеет свой URL?Или последовательно, если это так.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Вы можете написать функцию, которая содержит общие части.Примерно так:

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.
}

Это всего лишь один из способов, которым вы могли бы сделать это, но важной частью является абстракция повторяющейся работы в функцию.

0 голосов
/ 13 июня 2018

В идеале вам следует избегать отправки 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]);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...