【发布时间】:2014-10-24 14:03:47
【问题描述】:
我需要在导航标签内容框中显示跨域网页。我正在使用此链接中解释的“任何来源”示例
Loading cross domain endpoint with jQuery AJAX
我的 HTML 代码如下所示:
<section class="local-market-stats">
<div id="market-condition-chart-wrap">
<ul class="nav nav-tabs" id="myTabs">
<li class="active"><a data-toggle="tab" href="#cc">CC</a></li>
<li><a data-toggle="tab" href="#fm">FM</a></li>
<li><a data-toggle="tab" href="#et">ET</a></li>
<li><a data-toggle="tab" href="#bs">BS</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="cc">
<div></div> <!-- the external page content displays here -->
</div>
<div class="tab-pane" id="fm">
</div>
<div class="tab-pane" id="et">
</div>
<div class="tab-pane" id="bs">
</div>
</div><!-- end tab-content -->
</div><!-- end market-condition-chart-wrap -->
</section><!-- end local-market-stats -->
Ajax 代码:
$.ajaxSetup({
datatype : "html",
contentType: "application/x-www-form-urlencoded; charset=UTF-8"
});
$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://www.marketrendspremium.com/share/v1/e/cmlkPTEmZnRpZD0yJmZpZD0xMDAwJmd0eT0xMiZsdGlkPTQmbGlkPTk5OTk5JmdpZD0wJmNjPTAwMDBkZCZzaWQ9MCZtaWQ9MCZ0dD0yJm1vZGU9MiZ3aWR0aD01NDAmaGVpZ2h0PTMzMCZtbHNpZD0wJmN0eT1tbHM=')
+ '&callback=?',
function(data) {
$('#cc div').html(data.contents);
});
结果没有显示任何内容,但如果我将其切换回 encodeURIComponent('http://google.com') 它工作得很好。我真的不需要对 url 进行编码,因为链接应该像那样显示,但即使我删除了 encodeURIComponent(),它仍然不起作用。
非常感谢任何建议!
【问题讨论】:
-
尝试将 ajaxSetup 的 contentType 更改为
application/json; charset=utf-8。并且不需要 ajaxSetup 中的数据类型。 -
感谢您的帮助。嗯,网页的内容是一个图表,我改成application/json后,图表没有显示,只显示了“chart在这里”的注释。
-
所以现在是另一个问题。您将获得页面的完整 HTML,然后将其插入到 div 中。这不适合您的用例。你为什么需要这样的东西?我认为您应该能够获取所需的数据(不是整个页面的 HTML,只是数据)并在页面上本地启动图表。
-
这是个好问题。实际上,该网站提供了这样的 iframed 内容 '',但我无法将其显示在较新的火狐浏览器。后来我了解到其他主要浏览器也会做同样的事情,要显示 iframed 内容我需要点击一个“盾牌”图标。所以我需要另一个解决方案
标签: javascript jquery ajax iframe browser