Comment dépasser les “total_rows” lors de l’parsing JSON de CouchDB

J’utilise le code jQuery suivant pour obtenir un fichier JSON de CouchDB.

Function getURL() { var api_url = 'http://127.0.0.1:5984/couchcontentqueue/_design/DocCollections/_view/view_all_by_url_name?key="favorite-flickr-photos"&?callback=?'; $.getJSON(api_url, function(json) { var type = json.type; var desc = json.description; $("#dropBox h3").html(type); $("#dropBox p").html(desc); }); }; 

Lorsque je fais un GET sur cette URL, il fournit les informations suivantes:

{“total_rows”: 6, “offset”: 5, “lignes”: [{“id”: “f5ba37e5af406ab079d596f7a1f30a2d”, “clé”: ….]}

Firebug me donne l’erreur suivante: étiquette non valide http://127.0.0.1:5984/couchcontentqueue/_design/DocCollections/_view/view_all_by_url_name?key=%22favorite-flickr-photos%22&?callback=jsonp1304111285023 Line 1

Je n’arrive pas à comprendre comment franchir cette première ligne pour accéder à l’object JSON réel. Des idées? Merci.

? callback =

On dirait que vous essayez de faire une requête JSONP, mais:

{“total_rows”: 6, …

Est une réponse JSON simple et non un appel JSONP. Si vous ne voulez pas faire de requête JSONP interdomaine, supprimez le paramètre callback et demandez à jQuery d’parsingr la réponse en tant que JSON normal.

Si vous avez besoin de faire des requêtes JSONP inter-domaines et que vous comprenez les risques de sécurité qui en découlent, assurez-vous d’utiliser une version mise à jour de CouchDB et ajoutez la directive suivante:

 allow_jsonp = true 

au fichier .ini dans la section [http] .

étiquette invalide

C’est ce que vous obtenez lorsque vous essayez d’exécuter / eval une chaîne contenant un object JSON. JS parsing que le "x" dans {"x": "foo"} soit considéré comme un “libellé” JavaScript (utilisé rarement pour les instructions continue ) dans un bloc d’instructions, plutôt qu’un nom de propriété d’object dans un object. expression littérale d’object.

jQuery utilisera l’exécution de script au lieu de l’parsing JSON lorsqu’il pense que vous exécutez une demande JSONP. Avoir le paramètre ‘callback =’ dans votre URL le fait penser comme par magie.

 var key = json.rows[0].key; var doctype = json.rows[0].value.doc_type; 

etc., etc…