web-dev-qa-db-fra.com

Différence entre dataType jsonp et JSON

Je télécharge le chargement automatique de l'interface utilisateur Jquery, en consultant remote-jsonp.html. C'est la fonction ajax mais j'ouvre la console .. Je ne vois aucune demande dans ma console ...

Quelle est la différence entre dataType; "jsonp" et dataType; "JSON"

$( "#city" ).autocomplete({
        source: function( request, response ) {
            $.ajax({
                url: "http://ws.geonames.org/searchJSON",
                dataType: "jsonp",
                data: {
                    featureClass: "P",
                    style: "full",
                    maxRows: 12,
                    name_startsWith: request.term
                },
                success: function( data ) {
                    response( $.map( data.geonames, function( item ) {
                        return {
                            label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                            value: item.name
                        }
                    }));
                }
            });
        },

Référence http://jqueryui.com/demos/autocomplete/remote-jsonp.html

19
Alizain Prasla

dataType: jsonp pour une demande interdomaine, cela signifie une demande vers un domaine différent et dataType: json pour le même domaine-même demande d'origine.

Charge dans un bloc JSON à l'aide de JSONP. Ajoute un "? Callback =?" Supplémentaire à la fin de votre URL pour spécifier le rappel. Désactive la mise en cache en ajoutant un paramètre de chaîne de requête, "_ = [TIMESTAMP]", à l'URL, sauf si l'option de cache est définie sur true.

En savoir plus sur même politique d'origine

En savoir plus sur jQuery AJAX

28
thecodeparadox

Avec JSONP, vous ne devriez pas voir de demande ajax si c'est ce que vous recherchez. Vous devriez cependant voir une demande pour la ressource car JSONP est utilisé pour les appels interdomaines pour extraire des données de différents domaines.

Il renvoie vos données JSON enveloppées dans un nom de fonction. jQuery gère le nom de la fonction en arrière-plan et transmet les données à votre gestionnaire de réussite. Les données sont chargées en créant dynamiquement un élément de script avec l'attribut src pointant vers le service appelé, puis attaché au DOM du navigateur. Ensuite, le navigateur fait une demande à la ressource et le service Web répond avec la fonction de rappel et les données.

8
jlafay