服务器迁移后出现奇怪的javascript / json错误

时间:2013-06-28 11:09:47

标签: javascript jquery jsonp

我在服务器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;'开头的事实。

如何解决此问题?

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

  • 使用&amp; callback =?'在网址
  • dataType:'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);

答案 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来使其工作。