2010-09-30 22 views
4

En utilisant le code suivant, je reçois l'erreur dans le titre de cette question en utilisant la console développeur JavaScript Chrome:API Yelp Origine http: // localhost: 8888 n'est pas autorisé par Access-Control-Allow-Origin

jQuery.getJSON("http://api.yelp.com/business_review_search?term=starbucks&location=Urbana%20IL&limit=3&ywsid=XXX", 
function(data){ 
    jQuery.each(data, function(i,businesses){ 
    jQuery("#yelpPreview").append(businesses.url); 
    if (i == (amount - 1)) return false; 
    }); 
}); 

Entièrement, l'erreur est: XMLHttpRequest ne peut pas charger http://api.yelp.com/business_review_search?term=starbucks&location=Urbana%20IL&limit=3&ywsid=XXX. L'origine http://localhost:8888 n'est pas autorisée par Access-Control-Allow-Origin. J'utilise MAMP comme localhost.

Est-ce un problème avec le blocage par Yelp de l'accès API à un localhost, ou y a-t-il une erreur dans mon code?

Répondre

1

On dirait que vous utilisez jQuery. L'option 'jsonp' pour le type de données fourni par l'appel ajax de jQuery est une solution plus élégante à ceci, comme un exemple court:

$.ajax({ 
    url  : 'http://api.yelp.com/business_review_search', 
    dataType : 'jsonp', 
    data  : {term : 'restaurant', lat : xxx, long : xxx}, // callback is not necessary 
    success : function(data) { 
     // data is a normal response shown on yelp's API page 
    } 
});