在IE中调用jQuery ajax调用“无传输”错误
我需要使用四方API来search场地。 当然这是跨域的。
它在Firefox中没有任何问题,但在Internet Explorer(我已经testing过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中,它在控制台上login:
No Transport Error Error
我该怎么办?
我在Windows Mobile 7上testing了这个。
花了很多时间了解之后,终于find了这个:
http://bugs.jquery.com/ticket/10660
解决scheme很简单,只需设置:
$.support.cors = true;
和Ajax跨域请求将工作!
jQuery.support.cors = true; $.ajax({ crossDomain: true, url: "", type: "POST", dataType: "xml", data: soapMessage, });
您需要将跨域值设置为true
这个问题一直困扰我一段时间。 作为解决方法,我使用位于同一站点上的代理脚本。 这样的脚本只是执行服务器到服务器的非ajax HTTP请求(想到curl和WinHttp.WinHttpRequest)并将状态和数据传回给调用者。 它的工作,但显然不是很有效,因为它必须执行两个HTTP请求。
就我而言,解决scheme是上述所有内容的组合,加上“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:*”标题响应。
试试这个解决scheme
https://stackoverflow.com/a/14463975/237091
或者,简单地把这个代码放在你的HTML包含jquery后。
<!--[if lte IE 9]> <script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js'></script> <![endif]-->
- 如何在InternetExplorer 8中禁用caching
- 带固定标题的仅CSS滚动表
- window.print()在IE中不起作用
- 强制Internet Explorer使用特定的Java运行时环境安装?
- Internet Explorer 8表格单元格宽度bug与colspan集
- 当附加查询string参数或使用POST不是一个选项时,如何避免Internet Explorer 11中的AJAXcaching
- 为什么用setAttribute设置的onclick属性在IE中失败?
- 任何方式来移除活动表单中提交button的IE黑色边框?
- 如何修复JavaScript的Internet Explorer浏览器中的Array indexOf()