我在服务器A上托管了一个网站,该网站向服务器B上的网站发送请求。
最近看到服务器B上的网站已移至另一台服务器。让我们称之为服务器C.
由于服务器迁移,所请求的信息不再显示在服务器A上。
服务器A用来发送请求的javascript可以在下面看到:
<script type="text/javascript">
jQuery(document).ready(function() {
var ppUrl = 'http://www.nowgamernetwork.com/widgets/index.php?widget=popular&sourcetag=/other/&callback=jsonp1372412035546&_=1372412036723';
jQuery.getJSON(ppUrl, function(data) {
jQuery('.ipPopularPosts').append(data.content);
});
});
</script>
有趣的是,如果您将请求网址放入broswer中,它会显示正确的信息。
http://www.nowgamernetwork.com/widgets/index.php?widget=popular&sourcetag=/other/&callback=jsonp1372412035546&_=1372412036723
但是当网站请求此信息时,我会收到以下javascript错误:
Resource interpreted as Script but transferred with MIME type text/html: "http://www.nowgamernetwork.com/widgets/index.php?widget=popular&sourcetag=/other/&callback=jsonp1372416916349&_=1372416917575". jquery.js:3501
Uncaught SyntaxError: Unexpected token < index.php:1
上面的错误与index.php上的第1行有关,可以在下面看到:
<script type="text/javascript">window.jQuery || document.write("<script src='http://www.nowgamernetwork.com/js/libs/jquery-1.5.1.min.js'>\x3C/script>")</script>
出于某种原因,服务器A不喜欢从服务器C获得的响应以'&lt;'开头的事实。
如何解决此问题?
任何帮助将不胜感激!
答案 0 :(得分:1)
(function($) {
var url = 'http://www.nowgamernetwork.com/widgets/index.php?widget=popular&sourcetag=/other/&callback=?';
$.ajax({
type: 'GET',
url: url,
async: false,
jsonpCallback: 'jsonCallback',
contentType: "application/json",
dataType: 'jsonp',
success: function(json) {
$(document.body).html(json.content)
},
error: function(e) {
console.log(e.message);
}
});
})(jQuery);
答案 1 :(得分:0)
<script src='http://www.nowgamernetwork.com/js/libs/jquery-1.5.1.min.js'>\x3C/script>
看到问题?
答案 2 :(得分:0)
修正了它。
服务器C上的PHP脚本使用'ob_get_contents'将所有html拉成json格式。我注意到ob_start丢失了,所以我添加了它,现在它以正确的格式返回该数据。
由于某种原因,服务器B不需要ob_start来使其工作。