2015-05-12 20 views
8

Próbuję wywołać ten URL w moim kodu javascript:Krzyż Domain URL

http://api.addressify.com.au/address/autoComplete?api_key=99acd24a-1c94-49ad-b5ef-6f90d0f126b1&term=1+George+st+t&state=nsw&max_results=5

To jest mój kod javascript:

$.ajax({ 
     url: 'http://api.addressify.com.au/address/autoComplete', 
     type: 'GET', 
     crossDomain: true, // enable this 
     data: 'api_key=99acd24a-1c94-49ad-b5ef-6f90d0f126b1&term=1+George+st+t&state=nsw&max_results=5', // or $('#myform').serializeArray() 
     success: function() { alert('PUT completed'); } 
    }); 

Dostaję błąd Cross Domain URL w konsoli .

Każda pomoc?

+3

Dla karne domeny żądanie Ajax do pracy, serwer musi obsługiwać dostęp między domenami za pomocą CORS lub JSONP. – jfriend00

+0

możliwy duplikat [XMLHttpRequest nie może załadować adresu URL z jQuery] (http://stackoverflow.com/questions/3828982/xmlhttprequest-cannot-load-an-url-with-jquery) – Nizam

Odpowiedz

7

Trzeba użyć jsonp aby krzyż w miejscu połączenia żądania spróbuj tego:

$.ajax({ 
     url: 'http://api.addressify.com.au/address/autoComplete', 
     type: 'GET', 
     dataType:'jsonp', 
     jsonpCallback:'callback', 
     data: 'api_key=99acd24a-1c94-49ad-b5ef-6f90d0f126b1&term=1+George+st+t&state=nsw&max_results=5&jsonp=callback', // or 
    success: function(json) { 
     console.dir(json); 
    }, 
    }); 

Wywołanie usługi addressify przy pomocy parametru „jsonp” sprawi, że usługa owinąć odpowiedź w funkcji wywołania zwrotnego, które następnie jquery ajax używa do pobierania danych. Zatem parametr $ .ajax 'jsonpCallback' musi być zgodny z parametrem przekazać do serwisu 'jsonp' (w ich documentation)

Fiddle tutaj:

http://jsfiddle.net/luisvsilva/cL1c3t4j/1/

+0

Pracowała, piękna, dzięki, koleś! – Parkash

1

Wystarczy dodać dane do sekcji URL wywołania ajax.

$.ajax({ 
    url: 'http://api.addressify.com.au/address/autoComplete?api_key=99acd24a-1c94-49ad-b5ef-6f90d0f126b1&term=1+George+st+t&state=nsw&max_results=5', 
    type: 'GET', 
    crossDomain: true, // enable this 
    success: function() { alert('PUT completed'); } 
}); 

Jeśli nie możesz zakodować na sztywno niektórych z tych danych, możesz zamienić deklarację adresu URL w funkcję.

Używam metod modelu szkieletowego do pobierania danych - używaj wszystkiego, co musisz.

+0

Próbowałem tego. to nie działa – Parkash

+0

@ Co to jest błąd? Wypróbuj rozwiązanie Nizama - wygląda to bardziej poprawnie niż moje. – GreymondTheLong