在Firefox中获取无效标签错误



在从另一个域接收一些json内容时,我在firefox中收到无效标签错误。我的JS代码是:

$.getJSON('http://www.upsidelearning.com/blog/blogapp/getBlogDetails.php?getBlogsList=1&jsoncallback=?', function(data){
     alert("Success");
      }); 

在chrome错误控制台中收到以下错误:

(Warning)Resource interpreted as Script but transferred with MIME type text/html.
(Error) Uncaught SyntaxError: Unexpected token :

编辑:我的响应json是:

{"data":[{"title":"How Long Does It Take To Develop An Hour Of Elearning?","publishDate":"15 September 2011","author":"Abhijit Kadle","permalink":"http://www.upsidelearning.com/blog/index.php/2011/09/15/how-long-does-it-take-to-develop-an-hour-of-elearning/","thumbnail":"http://www.upsidelearning.com/blog/blogapp/images/blogpost-icon.png","id":9197}]}

请帮帮我。

当我从另一个域接收一些json内容时,firefox中出现了无效标签错误。

由于同源策略限制,不允许将AJAX请求发送到不同的域。有几个解决办法:

  1. 使用JSONP。getJSON()文档中有一个关于它的特定部分。只有当远程域支持它时才有效。例如,代替:

    {"data":[{"title":"How Long Does It Take To Develop An Hour Of Elearning?","publishDate":"15 September 2011","author":"Abhijit Kadle","permalink":"http://www.upsidelearning.com/blog/index.php/2011/09/15/how-long-does-it-take-to-develop-an-hour-of-elearning/","thumbnail":"http://www.upsidelearning.com/blog/blogapp/images/blogpost-icon.png","id":9197}]}
    

    远程域必须能够返回:

    callback({"data":[{"title":"How Long Does It Take To Develop An Hour Of Elearning?","publishDate":"15 September 2011","author":"Abhijit Kadle","permalink":"http://www.upsidelearning.com/blog/index.php/2011/09/15/how-long-does-it-take-to-develop-an-hour-of-elearning/","thumbnail":"http://www.upsidelearning.com/blog/blogapp/images/blogpost-icon.png","id":9197}]})
    

    其中客户端可以设置CCD_ 2名称。

  2. 如果JSONP不是一个选项,你可以在你的域上写一个服务器端脚本,作为你的域和远程域之间的桥梁,然后向你的脚本发送AJAX请求。


更新:

在众多评论之后,您似乎正在尝试使用YQL。这是一个完整的工作演示:

$.get('http://www.upsidelearning.com/blog/blogapp/getBlogDetails.php?getCategories=1&callback=?', function(result) {
    // you could parse the JSON like this:
    // var json = $.parseJSON(($(result.responseText).filter('p').text()));
    // alert(json.data[0].id);
    alert("Success");
});

请注意,应该使用$.get而不是$.getJSON

问题是服务器端脚本没有预先设置任何回调。你需要解决这个问题。它返回的是纯JSON,如果不将其传递到函数或回调中,就无法执行它。

最新更新