2011-10-13 13 views
5

Estoy empezando con $.ajax(). Este es mi código:

<html> 
<head> 
    <title>Commons app</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
</head> 
<body> 
<script type='text/javascript'> 
    if($) console.log('jQuery loaded!\n'); 

    $(function() { 
     $.ajax({ 
      url: 'http://en.wikipedia.org/w/api.php?action=query&list=allimages&ailimit=5&aifrom=Albert&aiprop=dimensions|mime&format=jsonfm&callback=?' 
     }) 
     .done(function() { console.log('Yay!'); }) 
     .fail(function() { console.log('Error!'); }) 
     .always(function() { console.log('Complete!'); }); 
}); 
</script> 
</body> 
</html> 

Por alguna razón, me sale el siguiente mensaje de error:

XMLHttpRequest no puede cargar http://commons.wikimedia.org/w/api.php?action=query&generator=allimages&gailimit=4&gaifrom=T&prop=imageinfo&iiprop=url&callback=?. El nulo de origen no está permitido por Access-Control-Allow-Origin.

Respuesta

1

Actualización: Este método está en desuso de jQuery 1.9. Ya no funciona

vieja respuesta:

Prueba esto (actualizado):

$.support.cors = true; 

$(function() { 
    $.ajax("http://commons.wikimedia.org/w/api.php?action=query&generator=allimages&gailimit=4&gaifrom=T&prop=imageinfo&iiprop=url&callback=?") 
    .complete(function() { alert('complete'); }) 
    .error(function() { alert('error'); }) 
    .success(function (data) { alert(data); }); 
}); 

Más sobre jQuery.support.cors sentada aquí: jQuery.support

P. S. gracias por una buena pregunta! Creo que será útil para mí también en el futuro.

+1

Mismo problema ... – Randomblue

+0

He actualizado la respuesta –

+0

Creo que esto ya no funciona, solo probado en Chrome para Mac, versión 30.0.1599.101. XMLHttpRequest no se puede cargar http://commons.wikimedia.org/w/api.php?action=query&generator=allimages&gailimit=4&gaifrom=T&prop=imageinfo&iiprop=url&callback= ?. El nulo de origen no está permitido por Access-Control-Allow-Origin. –

-3

Debe tener en cuenta las restricciones entre dominios para solicitudes AJAX, lo que le impedirá cargar sitios web arbitrarios en el fondo por razones de seguridad. Ver here para más información.

respuesta Antiguo:
Cuando se utiliza $(foo) debe especificar con qué elementos foo usted se refiere a modificar. Lo que probablemente está buscando es algo como esto:

$(document).ready(function(){ 
    // do something 
} 

Esto ejecutará las funciones una vez que el documento ha terminado de implantar su estructura DOM.

+1

No entiendo lo que dices. '$()' es un acceso directo para '$ (document) .ready()'. – Randomblue

+0

De hecho. No me di cuenta. :) Nunca he visto eso antes. Agregué una segunda parte a mi respuesta. Tal vez eso ayude. –

+0

En cuanto a su nueva respuesta: no creo que sea una restricción entre dominios. La única otra cosa que hago es cargar jQuery desde el CDN de Google. – Randomblue

Cuestiones relacionadas