ejemplos - jquery ajax json example
Modificar encabezados HTTP para una solicitud JSONP (2)
JSON con relleno funciona mediante la adición de un elemento de script a la página, con el atributo src apuntando a la URL del servicio web. Luego, el servicio web devuelve un script que contiene los datos envueltos en una función de devolución de llamada que se ejecuta cuando el script termina el análisis. No es tanto JSON (ni siquiera tiene que ser JSON válido, para empezar), ya que es JavaScript simple.
No hay forma de modificar los encabezados enviados para un elemento de script que se agrega a su página, desafortunadamente. Lo único que puede hacer es verificar si hay un método compatible con origen cruzado para recuperar datos, como por ejemplo:
XMLHttpRequest Nivel 2 - Chrome, Safari 4+, Firefox 3.5+, Opera
// Is XMLHttpRequest Level 2 supported? if ("withCredentials" in new XMLHttpRequest())
XDomainRequest - para IE 8, IE 9
// Is XDomainRequest supported? if ("XDomainRequest" in window)
Sería una buena idea probar estas implementaciones si existen y usarlas en consecuencia, volviendo al JSONP estándar para navegadores no compatibles o antiguos.
También es posible (pero poco probable, dado que es de alto perfil) que el servicio web no esté configurado para permitir solicitudes de origen cruzado, por lo que puede tener que recurrir a JSONP si la solicitud falla. Ver también, Intercambio de recursos de origen cruzado .
Estoy usando jquery para crear una solicitud a la API de búsqueda de Twitter. Estoy usando jsonp, ya que es necesario para solicitudes de dominios cruzados. Sin embargo, la API de Twitter especifica que debe establecer un User-Agent único para estas solicitudes, y limita sus solicitudes si no lo hace. El problema es que no veo forma de configurar este encabezado a través de jquery.
Este es el código que estoy usando:
$.ajax({
url: ''http://search.twitter.com/search.json'',
dataType: ''jsonp'',
type: ''get'',
data: { q: ''twitter'' },
success: function(data) {
alert(data.results);
}
});
He intentado usar el método beforeSend, pero parece que este evento no se está disparando. ¿Alguien puede encontrar alguna forma de resolver este problema?
Gracias.
Prueba esto :
// OAuth configurations
var config = {
''client_id'': ''xxxxxx.apps.googleusercontent.com'',
''scope'': ''https://www.google.com/m8/feeds/contacts/default/full''
};
gapi.auth.authorize(config, function(data) {
// login complete - now get token
var token = gapi.auth.getToken();
token.alt = ''json'';
// retrieve contacts
jQuery.ajax({
url: ''https://www.google.com/m8/feeds/contacts/default/full/?max-results=999999'',
dataType: ''jsonp'',
data: token,
success: function(data) { successGmail(data); }
});
});
Lo encontré allí: https://groups.google.com/d/msg/google-api-javascript-client/GuFxPzqQ9-0/hZpo041UaH4J