我需要使用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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
在Firefox中,它可以完美地显示接收的数据.在Internet Explorer中,它在控制台上登录:
No Transport
Error
Error
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我有一个非常简单的ajax请求(见下文).该服务器使用CORS,在IE 10 +,Chrome,Firefox和Opera中运行良好.但是,在Microsoft Edge上,它失败了
XMLHttpRequest:网络错误0x80070005,访问被拒绝.
我已经在这里,这里,这里和这里研究了这些帖子,但找不到有效的答案.那些人在使用IE时遇到了问题,但添加了contentType(此get不需要)和crossDomain使其工作正常.
CanIUse似乎表明CORS在Edge中可用.IE9关闭时请求也失败了,但是CanIUse只声明对CORS的部分支持,所以这是可以理解的.
有什么想法我可以解决这个问题吗?
码:
$.ajax({
crossDomain: true,
url: "http://localhost:2023/api/DoAction/test",
success: function (a) {
var res = JSON.parse(a);
alert(res.content);
},
error: function (a, e, r) {
alert(a.responseText);
}
});
Run Code Online (Sandbox Code Playgroud)
更新
要提供更多信息,以防它提供任何线索--ajax请求来自Azure并发布到使用OWIN自托管创建的localhost网站.这是不寻常的,但软件(只能在本地使用)需要从云服务获取数据.如上所述,它适用于所有其他浏览器,Edge是唯一的问题.