$ Fonction de rappel .getJson ne fonctionne pas
Question
J'appelle une page JSP en passant des paramètres qui délivre un JSON valide comme réponse, mais la fonction de rappel $.getJson
ne reçoit pas mis le feu.
JSP page de sortie est
{ "data": [ [ [ 1258185480000,4.39],
[ 1258186020000,4.31],
[ 1258184940000,4.39],
[ 1258183560000,4.39] ] ] }
Les points d'URL à la page JSP
Mon jquery code est
<script id="source" language="javascript" type="text/javascript">
$(function () {
alert("before");
$.getJson(URL,function(json){
alert("hello");
var plot = $.plot($("#placeholder"), json.data, options);
});
alert("after");
});
La solution
La fonction est $ .getJSON et non $.getJson
Autres conseils
$.getJSON( URL, function(data) {
alert("hello");
});
est rien d'autre qu'un raccourci pour appel ajax
$.ajax({
dataType: "json",
url: URL,
data: data,
success: function(data) {
alert("hello");
}
});
Important: de jQuery 1.4, si le fichier JSON contient une erreur de syntaxe, la demande généralement échouer en mode silencieux ... Par exemple, toutes les chaînes représentés dans JSON, si elles sont des propriétés ou des valeurs, doit être enfermé dans des guillemets doubles
source: jquery.getjson docs
Je viens de passer deux heures à ce sujet. J'ai trouvé un autre poste qui traite de la différence entre $.getJSON
et $.get
et comment il est vraiment pas. Alors je troqué mon getJSON()
pour get()
et ça a marché.
(tiens aussi à mentionner que j'avais aussi tout vérifié autre travaillait en vous connectant à l'action des rails et en vous connectant ce que je pouvais du javascript en dehors la fonction de rappel.)
$. GetJSON n'utilisera un rappel avec un bon objet JSON à traiter.
Assurez-vous également avec Firebug que vous obtenez JSON valide à partir du serveur.
Pour jQuery 3.4.1:
$.getJSON("test.json", function (json) {
console.log('Got JSON');
console.log(json);
})
.fail(function (jqxhr, textStatus, error) {
var err = textStatus + ", " + error;
alert("There has been an error. If the problem persists contact the customer service");
})
.always(function () {
console.log("complete");
});
Si vous pensez que le JSON est ok et que vous utilisez Chrome essayer « Vider le cache et dur Recharger ».