2013-08-16 10 views
6

Noobie tutaj. Piszę skrypt klienta, który musi odczytać plik XML z innej domeny. Próbowałem używać JSONP. Otrzymuję odpowiedź 200, ale klient nie może uzyskać dostępu do zwróconych danych z jakiegoś powodu. Mam dwa błędy:Cross-Domain AJAX do odczytu XML

Resource interpreted as Script but transferred with MIME type text/xml 

i

Uncaught SyntaxError: Unexpected token < 

Oto kod (I usunęliśmy URL XML ponieważ jest poufna):

$(document).ready(function() { 
    $.getJSON("urlOfFilecallback=?", function(data) { 
    console.log(data) 
}) 
}); 

Kiedy próbuję renderować dane w konsoli otrzymuję:

ReferenceError: data is not defined 

Jak mogę to naprawić? Czy muszę używać proxy?

Odpowiedz

1

XML jest domyślnie niedozwolony dla żądań międzydomenowych.

Jednak przy niewielkim programowaniu po stronie serwera można utworzyć serwer proxy i załadować dane w obrębie własnej domeny, a następnie wydrukować jako plik XML.

więcej informacji w tej Question

+1

BTW, myślę, że IE8 i niżej nie obsługują crossdomain żądań XHR, więc tak zrobić skrypt php – Alex

15

Nie trzeba pisać własne proxy. Można użyć YQL jeśli chcesz tutaj jest przykład jak:

//sample site that returns xml 
site = 'http://goo.gl/9iQWyG'; 


var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from xml where url="' + site + '"') + '&format=xml&callback=?'; 

// Request that YSQL string, and run a callback function. 
// Pass a defined function to prevent cache-busting. 
$.getJSON(yql, function(data){ 
    console.log(data.results[0]); 
}); 

oto console.log jsfiddle check.

(Usage limits API YQL publiczna jest 2.000 wnioski/godzina IP)

+1

jest jakiś inny sposób niż używanie yql? Uważam, że nie jest to dobra robota dla firmy, na wypadek gdyby zablokowali twój adres IP lub domenę - nagle się zawiedzie! –

+0

Teoretycznie możesz napisać swój własny serwer proxy i uzyskać dokładny wynik. Prawdopodobnie łatwiejszy w użyciu i implementacji. Ale bez niego zawsze będziesz musiał polegać na zewnętrznym serwerze proxy. – Shaunak

+0

dzięki za odpowiedź ... wszelkie sugestie dotyczące tworzenia własnego serwera proxy? wielkie dzięki! –