我需要使用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
我该怎么办?
发布于 2012-06-25 18:27:38
我在Windows Mobile7上对此进行了测试。
在花了很多时间去理解之后,我终于发现了:
http://bugs.jquery.com/ticket/10660
解决方案很简单,只需设置以下内容:
$.support.cors = true;
Ajax跨域请求将会起作用!
发布于 2013-02-25 19:41:22
jQuery.support.cors = true;
$.ajax({
crossDomain: true,
url: "",
type: "POST",
dataType: "xml",
data: soapMessage,
});
您需要将跨域的值设置为true
发布于 2014-11-21 22:55:23
这个问题已经困扰我一段时间了。作为一种变通方法,我使用位于同一站点上的代理脚本。这样的脚本只是执行服务器到服务器的非ajax HTTP请求(想想curl和WinHttp.WinHttpRequest),并将状态和数据传回调用者。它可以工作,但显然效率不是很高,因为它必须执行两个HTTP请求。
在我的例子中,解决方案是上面描述的所有内容加上“Access-Control-Allow-Origin”头的组合。
$.support.cors = true; // this must precede $.ajax({}) configuration
$.ajax({
crossDomain: true, // added in jQuery 1.5
headers: {
'Access-Control-Allow-Origin': '*'
},
...
});
应答这些调用的web服务也会使用“Access-Control-Allow-Origin:*”头进行响应。
https://stackoverflow.com/questions/9160123
复制相似问题