JSON Demande jointe [objet%20Object] en jQuery
Je suis en train de chercher une coutume flux JSON j'ai écrit avec jQuery en utilisant le getJSON
méthode. Pour une raison inconnue, l'URL semble avoir cache_gen.php?location=PL4
dépouillé de la fin et remplacé par [l'objet%20Object] résultant en une erreur 404 erreur se produise.
Voici le jQuery que j'utilise:
var fetchData = function() {
if (Modernizr.localstorage) {
var api_location = "http://weatherapp.dev/cache_gen.php";
var user_location = "PL4";
var date = new Date();
console.log(api_location + '?location=' + user_location);
jQuery.getJSON({
type: "GET",
url: api_location + '?location=' + user_location,
dataType: "json",
success: function(jsonData) {
console.log(jsonData);
}
});
} else {
alert('Your browser is not yet supported. Please upgrade to either Google Chrome or Safari.');
}
}
fetchData();
À partir de la console de log je peux voir la chaîne de l'URL est correctement calculés comme: http://weatherapp.dev/cache_gen.php?location=PL4
Toutefois, le deuxième ligne dans la console: Failed to load resource: the server responded with a status of 404 (Not Found)
.
Quelqu'un peut me pointer dans la bonne direction?
Mise à JOUR 19/01/2013 23:15
Bien, j'ai juste converti de manière qui est unique les docs parfaitement à l'aide de $.ajax
. J'ai aussi ajouté un "fail" et enregistré toutes les données qui est transmis.
var fetchData = function() {
if (Modernizr.localstorage) {
var api_location = "http://weatherapp.dev/cache_gen.php";
var user_location = "PL4";
var date = new Date();
var url = api_location + '?location=' + user_location;
console.log(url);
jQuery.ajax({
type: "GET",
url: api_location + '?location=' + user_location,
dataType: "json",
success: function(jsonData) {
console.log(jsonData);
},
error: function( jqXHR, textStatus, errorThrown ) {
console.log('textStatus: ' + textStatus );
console.log('errorThrown: ' + errorThrown );
console.log('jqXHR' + jqXHR);
}
});
} else {
alert('Your browser is not yet supported. Please upgrade to either Google Chrome or Safari.');
}
}
fetchData();
Après cela, ma console me donne les informations suivantes:
http://weatherapp.dev/cache_gen.php?location=PL4
download_api.js:44textStatus: parsererror
download_api.js:45errorThrown: SyntaxError: JSON Parse error: Unable to parse JSON string
download_api.js:46jqXHR[object Object]
J'ai assuré les en-têtes du flux JSON sont en cours, et l'alimentation est au service de JSON valide (il efficacement les caches un service 3ème partie alimentation pour économiser sur les coûts de l'API).
il peut être un
/etc/hosts
redirection :). Mais, certainement .dev
sons de poisson.dev est un domaine du développement. Il ont mis cela a un Apache virtual-host sur mon système local, qui est a une entrée dans mon
/etc/hosts
afin de s'assurer qu'résout correctement. Je peux accéder à ce domaine dans mon navigateur, de son le même domaine que celui où le fichier JS est chargé à partir.Ce qui apparaît à l'écran lorsque vous accédez à l'URL?
Je peux le prouver, copie de votre réponse à partir des outils de dev et le coller dans le jsonlint.com - il va vous montrer où est votre erreur.
OriginalL'auteur Daniel Groves | 2013-01-19
Vous devez vous connecter pour publier un commentaire.
La raison pour laquelle vous voyez ce message d'erreur:
Est parce que votre JSON n'est pas valide. Même si une réponse renvoyée par le serveur correctement, si votre type de données est "json" et le renvoi de la réponse n'est pas correctement formaté, JSON, jQuery va exécuter la fonction d'erreur de paramètre.
http://jsonlint.com est vraiment un moyen facile et rapide de vérifier la validité de votre chaîne JSON.
L'extension @Adam de la bonne réponse. Plus généralement, quelque chose est incompatibles entre votre "type de données" valeur lors de l'appel (explicite ou implicite) et les données retournées par le serveur. J'étais en précisant "html" pour mon type de données et eu cette erreur. J'ai omis l'option paramètre de type de données et de cessé de voir l'erreur. Je suis définitivement de retour html et l'insertion dans la page, mais je suis disposé à s'incliner devant l'ajax déesse et qu'elle pense que ma valeur de retour est tout type elle veut, tant que mon appel fonctionne.
OriginalL'auteur Adam
J'ai été en cours d'exécution dans la même question aujourd'hui. Dans mon cas, j'ai été l'affectation d'un objet JSON à une variable nommée "localisation" qui est un mot réservé en JavaScript sous Windows et appearantly est un raccourci pour windows.l'emplacement! Ainsi, le navigateur redirigé vers l'URL en cours avec [l'objet%20Object] ajouté à la fin. Simple d'utiliser un nom de variable autres que la "localisation" si la même chose se produit pour vous. Espérons que cela aide quelqu'un.
OriginalL'auteur Owen
Découvrez la véritable fonction de l'utilisation:
http://api.jquery.com/jQuery.getJSON/
Vous ne pouvez pas passer sur le paramètre d'objet dans
$.getJSON
comme avec$.ajax
, votre code devrait ressembler à ceci:Pour peut-être faire un peu plus clair,
$.getJSON
est juste une "fonction wrapper" qui a finalement appels$.ajax
avec{type:'get',dataType:'JSON'}
. Vous pouvez le voir dans le lien que j'ai fourni ci-dessus.pourquoi? L'OP ne pas utiliser toutes les options que
$.getJSON
n'est pas déjàparce qu'ils ont écrit leur code comme s'ils avaient été à l'aide .ajax - changeant seulement 7 caractères est plus facile.
Juste mis à jour le poste principal, ce que vous avez choisi yup sur était une erreur après avoir essayé plusieurs choses différentes. Ajout de plus d'informations de débogage maintenant.
OriginalL'auteur Adam