2012-06-01 13 views
15

Descargo Jquery UI autoload, buscando remote-jsonp.html. Esta es la función ajax pero yo abrir la consola .. No puedo ver ninguna solicitud en mi consola ...Diferencia entre tipo de datos jsonp y JSON

¿Cuál es la diferencia entre el tipo de datos; "jsonp" y tipo de datos; "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 
         } 
        })); 
       } 
      }); 
     }, 

referenciahttp://jqueryui.com/demos/autocomplete/remote-jsonp.html

Respuesta

26

dataType: jsonp para la petición de dominios cruzados, que significa solicitud de diferente dominio y dataType: json para misma petición origen dominio-mismo.

Carga en un bloque JSON usando JSONP. Agrega un extra "? Callback =?" al final de su URL para especificar la devolución de llamada. Inhabilita el almacenamiento en caché al agregar un parámetro de cadena de consulta, "_ = [TIMESTAMP]", a la URL a menos que la opción de caché se establezca en verdadero.

leer sobre same origin policy

Leer más sobre jQuery AJAX

+0

'cross-browser' o' cross-domain'? : s –

+1

@Joy Definitivamente de dominio cruzado. –

+0

@Joy gracias a ambos – thecodeparadox

7

Con JSONP no debería ver una petición AJAX si eso es lo que estás buscando. Sin embargo, debería ver una solicitud del recurso porque JSONP se usa para llamadas de dominios cruzados para obtener datos de diferentes dominios.

Devuelve los datos JSON envueltos en un nombre de función. jQuery maneja el nombre de la función detrás de las escenas y pasa los datos a su controlador de éxito. Los datos se cargan creando dinámicamente un elemento script con el atributo src apuntando al servicio que se llama y luego se adjunta al DOM del navegador. Luego, el navegador realiza una solicitud al recurso y el servicio web responde con la función de devolución de llamada y los datos.

Cuestiones relacionadas