Usando jQuery $ getJSON Como faço para criar dinamicamente os dados para o parâmetro [dados] após Url param?
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.
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);
});