Usando jQuery $ getJSON Como faço para criar dinamicamente os dados para o parâmetro [dados] após Url param?

StackOverflow https://stackoverflow.com/questions/2442085

  •  19-09-2019
  •  | 
  •  

Pergunta

Eu não tenho problemas para obter o JSON para o trabalho e analisar o retorno JSON. Eu estava pensando como eu poderia construir uma dinâmica "todos os dados é" e colá-la em [data] para passar meus parâmetros de lá e não manualmente anexá-los ao URL.

De exemplo website jQuery:

$.getJSON("test.js", { name: "John", time: "2pm" }, function(json){
     alert("JSON Data: " + json.users[3].name);
});

Eu pensei que eu poderia construir uma string (que não faz sentido de qualquer maneira) e soltá-lo dentro do {}, mas eu obviamente não entendem essa parte.

Nome: não é uma cadeia e você não pode colocar uma variável em parte, por isso, como eu ia colocar dinamicamente itens em qualquer [dados] é.

UPDATE: Obrigado pelas respostas. Eu seria capaz de remover um nome de parâmetro do objeto se eu não encontrar um valor válido, mais tarde, ou que eu preciso para destruí-la e recriá-lo? Eu estou usando algumas caixas de seleção para escolher as coisas e eu não pode ter algo selecionado, então eu não gostaria de passar esse parâmetro nome / valor.

Foi útil?

Solução

Você pode construir o seu objeto como este:

var someVar = someRandomString();
$.getJSON('test.js', (function() {
  var theData = {};
  theData[someVar] = someRandomValue();
  return theData;
})(), function(jsonStuffFromServer) {
  alert("JSON Data: " + jsonStuffFromServer.users[3].name);
});

É claro que você não tem que construir o objeto "dados" ali em uma função anônima; você pode fazê-lo separadamente de antemão:

var theData = {};
theData[someVariableWithANameInIt] = someRandomValue();
$.getJSON(url, theData, function(jsonStuff) { ... });

Veja como você pode construir-se como um objeto a partir de um conjunto de elementos <select> em sua página:

var theData = {};
$('#myForm select').filter(function() { return $(this).val() != ''; })
  .each(function() {
    theData[this.name] = $(this).val();
  });

$.getJSON(url, theData, function(jsonStuff) { ... });

Outras dicas

Criar um objeto, então você pode colocar todas as propriedades que você gosta nele:

var data = new Object();

ou

var data = {};

Você pode usar a sintaxe da propriedade:

data.name = 'John';
data.time = '2pm';

ou sintaxe de matriz associado (que é útil se o nome do parâmetro é uma palavra-chave):

data['name'] = 'John';
data['time'] = '2pm';

Você pode, variáveis ??de uso do curso para os valores e variáveis ??usar, mesmo para especificar o nome do parâmetro:

var param = 'name';
var value = 'John';
data[param] = value;

Então você acabou de usar a variável de dados na chamada:

$.getJSON("test.js", data, function(json){
   alert("JSON Data: " + json.users[3].name);
});

Você pode fazer isso:

var myName = $("#nameField").val();
var myTime = $("#timeField").val();

$.getJSON("test.js", { 'name': myName, 'time': myTime}, function(json){
     alert("JSON Data: " + json.users[3].name);
});

É isso que você quer dizer, ou parâmetros dinâmicos, bem como variáveis?

O {} é um javascript objeto literal tão nome é uma propriedade do objeto.

Você pode fazer algo como isto:

var data = {};
data.name = $("#input").val();
$.getJSON("test.js", data, function(json){
     alert("JSON Data: " + json.users[3].name);
});

Ou algo assim

var data = {
    name: $("#input").val(),
};
$.getJSON("test.js", data, function(json){
     alert("JSON Data: " + json.users[3].name);
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top