Мне нужно использовать foursquare API для поиска мест. Конечно, это кросс-домен.
В Firefox проблем нет, но в Internet Explorer (7, 8, 9 я тестировал).
Мой код javascript выглядит так:
searchVenues: function(searchQuery) {
$.ajax({
url: 'https://api.foursquare.com/v2/venues/search',
data: {
sw: bound_south_west,
ne: bound_north_east,
query: searchQuery.query,
oauth_token: FSQ_OAUTH_TOKEN,
limit: 25,
intent: 'browse',
v: 20120206
},
cache: false,
dataType: 'json',
success: function(data) {
displayResults(data, searchQuery.query);
},
error: function(xhr, status, errorThrown) {
console.log(errorThrown+'\n'+status+'\n'+xhr.statusText);
}
});
}
В Firefox отлично отображает полученные данные. В Internet Explorer он входит в консоль:
No Transport
Error
Error
Что я должен делать?
Ответы:
Я тестировал это на Windows Mobile 7.
После МНОГО времени, потраченного на понимание, я наконец нашел это:
http://bugs.jquery.com/ticket/10660
Решение простое, просто установите это:
и междоменные запросы Ajax будут работать!
источник
вам нужно сделать значение междоменного значения true
источник
crossDomain: true
к аргументу параметров.crossDomain: true
, что$.support.cors
по умолчанию, если я не ошибаюсьЭта проблема меня беспокоит некоторое время. В качестве обходного пути я использую прокси-скрипты, расположенные на том же сайте. Такие сценарии просто выполняют межсерверный HTTP-запрос, отличный от ajax (подумайте о curl и WinHttp.WinHttpRequest), и передают статус и данные обратно вызывающей стороне. Он работает, но явно не очень эффективен, поскольку должен выполнять два HTTP-запроса.
В моем случае решение представляет собой комбинацию всего описанного выше плюс заголовок Access-Control-Allow-Origin.
Веб-служба, отвечающая на эти вызовы, также отвечает заголовком Access-Control-Allow-Origin: *.
источник
Попробуйте это решение:
https://stackoverflow.com/a/14463975/237091
Или просто поместите этот код в свой HTML сразу после включения jquery.
источник
Я просто изменил версию jquery и заменил ссылку CDN, и это сработало! Просто сделайте это, если
crossDomain:true
и$.support.cors
= true не работает.источник