1

我有一个托管在服务器 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>

有趣的是,如果您将请求 URL 放入浏览器,它会显示正确的信息。

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 获得的响应以“<”开头的事实。

我该如何解决这个问题?

任何帮助,将不胜感激!

4

3 回答 3

1
  • 使用 &callback=?' 在网址中
  • 数据类型:'jsonp'
(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);
于 2013-06-28T14:08:21.500 回答
0
<script src='http://www.nowgamernetwork.com/js/libs/jquery-1.5.1.min.js'>\x3C/script>

看到问题了吗?

于 2013-06-28T11:13:45.657 回答
0

修复。

服务器 C 上的 PHP 脚本使用“ob_get_contents”将所有 html 提取为 json 格式。我注意到 ob_start 丢失了,所以我添加了它,它现在以正确的格式返回该数据。

由于某种原因,服务器 B 不需要 ob_start 来使其工作。

于 2013-06-28T11:28:15.860 回答