Meilleure structure de données JSON

J’ai le code jQuery suivant et cela fonctionne bien et je peux le désérialiser correctement sur le serveur.

Mais lorsque j’ai essayé de créer une variable et de la passer en tant qu’object JSON, cela n’a pas fonctionné. (Le code commenté ne fonctionnait pas. Les valeurs n’atteignaient pas le serveur correctement).

Référence: http://www.json.org/js.html

Comment pouvons-nous définir la variable correctement pour l’object JSON?

$(".searchCostPages").click(function () { var url = '/SearchDisplay/' + 'TransferSearchCriteria'; //var searchCriteria = {}; //searchCriteria.Accrual = "A"; //searchCriteria.Brand = "B"; //$.getJSON(url, {searchCriteria: searchCriteria //}, function (data) { // if (data.length) { // alert('Success'); // } //}); $.getJSON(url, { "Accrual": "A", "Brand": "B" }, function (data) { if (data.length) { alert('Success'); } }); }); 

Travailler – En-tête de réseau:

entrez la description de l'image ici

Ne fonctionne pas – En-tête de réseau:

entrez la description de l'image ici

METTRE À JOUR

Le code suivant a fonctionné ici. Reportez-vous également à jQuery Les parameters Ajax ne sont pas formatés correctement

  var searchCriteria = {}; searchCriteria.Accrual = "A"; searchCriteria.Brand = "B"; $.getJSON(url, searchCriteria , function (data) { if (data.length) { alert('Success'); } }); 

Vos deux exemples ne transmettent pas le même argument de data à $.getJSON() .

L’exemple de travail passe cet object:

 { Accrual: "A", Brand: "B" } 

L’exemple non fonctionnel passe cet object:

 { searchCriteria: { Accrual: "A", Brand: "B" } } 

Regarde la différence?

Pour corriger l’exemple { searchCriteria: searchCriteria } dans lequel vous passez { searchCriteria: searchCriteria } dans $.getJSON() , vous pouvez le remplacer par searchCriteria , supprimant ainsi le niveau supplémentaire d’object.

Notez également que ce sont des objects JavaScript avec lesquels vous travaillez ici, pas JSON. Par exemple, vous n’avez pas besoin de citer les noms de propriété tels que "Accrual" comme requirejs par JSON. (Cela ne fait pas de mal de citer les noms de propriétés, ce n’est tout simplement pas nécessaire dans un object JavaScript.) Il est utile de savoir quand vous traitez spécifiquement avec JSON et quand vous traitez avec des objects JavaScript ordinaires, car ils pas la même chose.

Votre code commenté transmet un object différent au code non commenté.

Données commentées (non fonctionnelles):

 { searchCriteria: { Accrual: "A", Brand: "B" } } 

Données non commentées (de travail):

 { Accrual: "A", Brand: "B" } 

la demande ajax d’origine commentée devrait être:

 $.getJSON(url, searchCriteria, function (data) { if (data.length) { alert('Success'); } });