Mon code côté serveur renvoie une valeur qui est un objet json en cas de succès et une chaîne 'false' en cas d'échec. Maintenant, comment puis-je vérifier si la valeur renvoyée est un objet JSON?
Réponses
Trop de publicités?La solution choisie ne fonctionne pas pour moi parce que je suis un
"Unexpected Token <"
erreur dans le navigateur Chrome. C'est parce que l'erreur est levée dès que l'analyse vient de partout et de caractère inconnu. Cependant, il existe un moyen de contourner ce problème si vous êtes de retour seulement de la chaîne de valeurs dans le cadre de l'ajax (qui peut être assez utile si vous utilisez PHP ou ASPX pour traiter les requêtes ajax et pourrait, ou non, de retour JSON selon les conditions)
La solution est assez simple, vous pouvez effectuer les opérations suivantes pour vérifier si c'était un retour JSON valide
var IS_JSON = true;
try
{
var json = $.parseJSON(msg);
}
catch(err)
{
IS_JSON = false;
}
Comme je l'ai dit avant, c'est la solution si vous êtes de retour de type chaîne de choses à partir de votre requête AJAX ou si vous êtes de retour type mixte.
jQuery.parseJSON () doit renvoyer un objet de type "objet", si la chaîne est JSON. Il vous suffit donc de vérifier le type avec typeof:
var response=jQuery.parseJSON('response from server');
if(typeof response =='object')
{
//It is JSON
}
else
{
if(response ===false)
{
//the response was a string "false", parseJSON will convert it to boolean false
}
else
{
//the response was something else
}
}
Si vous avez jQuery, utilisez isPlainObject .
if ($.isPlainObject(my_var)) {}
Je sais que ce fil a déjà été répondu, mais venir ici n'a pas vraiment résolu mes problèmes, j'ai trouvé cette fonction ailleurs. peut-être que quelqu'un qui vient ici trouvera cela utile pour eux;
function getClass(obj) {
if (typeof obj === "undefined")
return "undefined";
if (obj === null)
return "null";
return Object.prototype.toString.call(obj)
.match(/^\[object\s(.*)\]$/)[1];
}