web-dev-qa-db-fra.com

Passer des données JSON à .getJSON dans jQuery?

J'essaie de transmettre un objet JSON à .getJSON, mais je continue à avoir une erreur de demande incorrecte. C'est ce que j'essaye:

var data = {
    "SomeID": "18",
    "Utc": null,
    "Flags": "324"
};

$.getJSON("https://somewhere.com/AllGet?callback=?", JSON.stringify(data), function (result) {
    alert(result);
});

Actuellement, pour que cela fonctionne, je dois le faire, mais je n'aime pas la façon dont je dois construire manuellement la chaîne de requête:

$.getJSON("https://somewhere.com/AllGet?SomeID=18&Utc=&Flags=324&callback=?", null, function (result) {
        alert(result);
    });

Quelqu'un sait-il comment faciliter les requêtes avec la transmission d'objets JSON? J'apprécierais toute aide ou conseil.

10
TruMan1

selon le site, ceci est valable:

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

alors essayez:

var data = {
    SomeID: "18",
    Utc: null,
    Flags: "324"
};

$.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) {
    alert(result);
});

edit: http://api.jquery.com/jQuery.getJSON/

23
craniumonempty

N'utilisez pas JSON.stringify, transmettez simplement les données telles quelles.

$.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) {
    alert(result);
});
3
Senad Meškin

Lorsque vous fournissez des données à une demande GET jQuery, un objet object, et non une chaîne JSON, est requis pour la construction des paramètres de chaîne de requête. Essayez de changer votre code original pour simplement ceci:

$.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) {
    alert(result);
});
3
Jacob

pourquoi avez-vous besoin d'un rappel? (Ow wait, jsonp) Je voudrais d'abord essayer ce qui suit:

$.getJSON("https://somewhere.com/AllGet?callback=?", data, function(result) {
  alert(result);
});

quelque part dans firebug et voyez si elle renvoie ce que vous attendez. Je ne suis pas sûr de ce que fait une chaîne en tant que données, mais simplement donner un objet fonctionne très bien.

1
Johan

Vous n'avez pas besoin de faire JSON.stringfy, il suffit de passer leJSONobject, jQuery construira votre paramètre d'URL avec

$.getJSON("https://somewhere.com/AllGet?callback=?", data, function (result) {
    alert(result);
});
1
Abdul Munim
$.getJSON("https://somewhere.com/AllGet?callback=?", {SomeID:"18",Utc:null,Flags:"324"}, function (result) {
        alert(result);
    });

OR

var data = {
    "SomeID": "18",
    "Utc": null,
    "Flags": "324"
};


$.getJSON("https://somewhere.com/AllGet?callback=?",
 {
SomeID:data.SomeID,
Utc:data.Utc,
Flags:data.Flags
},
 function (result) {
            alert(result);
        });
0
Rafay

J'ai essayé d'encoder le JSON et cela a fonctionné.

Je ne sais pas si c'est efficace ou pratique, le partager comme un moyen de contourner la question ci-dessus.

 $.getJSON("https://somewhere.com/AllGet?data="+encodeURI(JSON.stringify(data)), function (result) {
        alert(result);
 });
0
Suketu