En utilisant Jquery $ getJSON Comment créer dynamiquement des données pour le paramètre [de données] après Url param?

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

  •  19-09-2019
  •  | 
  •  

Question

Je n'ai aucun problème à obtenir le JSON pour travailler et analyser le retour JSON. Je me demandais comment je pouvais construire une dynamique « toutes les données est » et le coller dans [les données] pour passer mes paramètres à partir de là et ne pas les ajouter manuellement à l'URL.

Dans l'exemple de site jquery:

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

Je pensais que je pouvais construire une chaîne (qui n'a pas de sens de toute façon) et déposez-le dans le {}, mais je ne comprends évidemment pas cette partie.

nom: n'est pas une chaîne et vous ne pouvez pas mettre une variable dans cette partie, alors comment pourrais-je mettre dynamiquement des éléments dans ce que [les données] est.

MISE À JOUR: Merci pour les réponses. Serais-je capable de supprimer un nom de paramètre de l'objet si je ne l'ai pas trouvé une valeur valide plus tard ou aurais-je besoin de le détruire et de le recréer? J'utilise des boîtes de sélection pour choisir les choses et je ne peux pas avoir quelque chose sélectionné donc je ne voudrais pas passer ce nom / valeur du paramètre.

Était-ce utile?

La solution

Vous pouvez construire votre objet comme ceci:

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

Bien sûr, vous ne devez pas construire l'objet « de données » là dans une fonction anonyme; vous pouvez le faire séparément au préalable:

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

Voici comment vous pouvez construire un tel objet à partir d'un ensemble d'éléments de <select> sur votre page:

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

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

Autres conseils

Créer un objet, vous pouvez mettre toutes les propriétés que vous aimez dans ce:

var data = new Object();

ou

var data = {};

Vous pouvez utiliser la syntaxe de la propriété:

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

ou associé syntaxe de tableau (qui est utile si le nom du paramètre est un mot-clé):

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

Vous pouvez bien sûr les variables d'utilisation pour les valeurs, et même utiliser des variables pour spécifier le nom du paramètre:

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

Ensuite, il suffit d'utiliser la variable de données dans l'appel:

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

Vous pouvez faire ceci:

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

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

Est-ce que vous voulez dire, ou des paramètres dynamiques ainsi que les variables?

Le {} est un javascript objet littéral si le nom est une propriété de cet objet.

Vous pouvez faire quelque chose comme ceci:

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

Ou quelque chose comme ça

var data = {
    name: $("#input").val(),
};
$.getJSON("test.js", data, function(json){
     alert("JSON Data: " + json.users[3].name);
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top