9
votes

Utiliser JQuery pour obtenir JSON Data Retourne une erreur d'étiquette non valide

J'ai ce code et j'ai également essayé quelque chose de similaire à l'aide de la fonction $ .gejgejson: xxx

lorsque je regarde dans Firebug, il renvoie une erreur "une étiquette non valide". J'ai cherché un peu certaines personnes font appel à l'utilisation d'un analyseur pour analyser les résultats. Je peux voir les résultats revenir en Firebug. Quelqu'un peut-il indiquer à un exemple de ce que je devrais faire?

L'erreur Firebug:

Étiquette non valide http://api.kivaws.org/v1/loans /newest.json?callback=jsonp1249440194660&_=1249440194924&format=json& Ligne 1

Sortie de l'échantillon de ce que l'on dirait que le Json peut être trouvé ici: http://build.kiva.org/docs/data/loans


0 commentaires

5 Réponses :


2
votes

Peut-être que cela peut aider avec JSONP:

http://remysharp.com/2007/10/08/ what-is-jsonp /


0 commentaires

0
votes

Où est-ce que l'erreur se produit? Est-ce que l'erreur se produit lorsque vous essayez de boucler les données AJAX et de l'ajouter au Inner_DIV? Si oui, veuillez nous montrer ce que les données.loans ressemblent.

En outre, il existe une faute de frappe dans votre code: xxx


2 commentaires

Correction de ma faute de frappe - Je crois que c'est sur la récupération - si je sors cette boucle JQuery, je reçois toujours l'erreur.


Quelle ligne donne l'erreur? Pouvez-vous inclure un instantané d'erreur Firebug?



5
votes

Eh bien, j'ai trouvé la réponse ... Cela ressemble à Kiva ne supporte pas JSONP qui est ce que JQuery fait ici -

http://groups.google.com/group/build- kiva / browse_thread / thread / 9E9F9D5DF821FF8C

... Nous n'avons pas l'intention de soutenir JSONP. Soutenir ces avocats pauvres pratiques de sécurité et il y a déjà quelques bonnes façons d'accéder à la données de JavaScript qui protègent votre Application et vos utilisateurs. Voici un Super article sur le sujet:

http://yuiblog.com/blog/2007 / 04/10 / JSON-and-Browser-Security /

tandis que le risque pour les prêteurs kiva est faible maintenant que nous ne traitons que Données publiques, permettant au prêteur privé Les données à importer via des balises de script sont un risque plus loin sur la route. Notre la pensée est le risque (et la complexité ajouté pour créer des applications sécurisées) ne vaut pas l'avantage de Développeurs.

écrire un proxy côté serveur pour le Les aliments dont vous avez besoin est le plus commun Solution pour accéder aux données dans applications basées sur le navigateur. Certains Les autres astuces existent en utilisant des iframes. Les meilleur espoir est la nouvelle race de client- technologies / normes basées sur les normes qui seront Laissez l'accès JavaScript basé sur le navigateur ressources croisées de manière sécurisée ( http://dev.w3.org/2006/waf/access-control/ http://json.org/jsonrequest.html ). Quelques outils comme BrowserPlus et des engrenages Laissez-vous jouer avec ceux-ci aujourd'hui, mais vous ne sera pas capable de dépendre de ces la nature pendant un moment.

comme une note finale, je vais souligner que Toute personne utilisant des réponses JSON dans JavaScript devrait soit analyser JSON explicitement ou valider le JSON avant prendre EVAL () à cela. Voyez ici:

http://www.json.org/js.html

liée de la page est un grand mise en œuvre de référence de la Parse JSON proposé pour ECMAScript Interface, json.parse ().

Cheers, Skylar


1 commentaires

Merci Brendan, tu t'esillais un tas de temps!



2
votes

Lorsque vous retournez les données, le rendez-vous avec le type de contenu correct et comme méthode?

Vous devez renvoyer vos données comme suit (Exemple PHP 5): P>

jQuery(document).ready(function(){
var kiva_url = "http://api.kivaws.org/v1/loans/newest.json";

jQuery.ajax({
    type: "GET",
    url: kiva_url,
        data:"format=json", 
    dataType: "jsonp",
    error: function(xmlhttp,error_msg){
            alert("error"+error_msg);
    }
});

function my_callback_method( data ){
   alert("here");
   if( data && typeof(data) == 'object') ){
     jQuery.each(data.loans, function(i, loan){
         jQuery("#inner_div").append(loan.name + "<br />");
     });
   }
}

});


0 commentaires

0
votes

C'est la réponse http://forum.jquerer.com/topic/jquery-getjson-invalid-label

Enveloppez simplement votre réponse JSON avec votre demande de rappel Par exemple. jquery16203473509402899789_1315368234762 ({"Code": 200, "Message": "Place ajoutée avec succès", "Contenu": ""}); jquery162034735094028999789_1315368234762 est votre demande de rappel (vous pouvez l'obtenir via QueryString) {"Code": 200, "Message": "Placez ajouté avec succès"} est votre réponse JSON


0 commentaires