jquery - Firefox 中出现无效标签错误

标签 jquery ajax json cross-domain jsonp

当我从另一个域接收一些 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}]}

请帮助我。

最佳答案

I am getting Invalid label error in firefox while receiving some json content from another domain.

由于same origin policy限制 不允许向不同域发送 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}]})
    

    客户端可以在其中设置callback姓名。

  2. 如果 JSONP 不是一个选项,您可以在您的域上编写一个服务器端脚本,该脚本将充当您的域和远程域之间的桥梁,然后将 AJAX 请求发送到您的脚本。

<小时/>

更新:

经过大量评论后,您似乎正在尝试使用 YQL。这是 full working demo :

$.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 .

关于jquery - Firefox 中出现无效标签错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7467036/

相关文章:

javascript - 重新加载 $(document).ready(); AJAX加载后的功能

javascript - 选择标签的 document.getElementById().innerHTML 在 IE 中不起作用

php - 在 laravel postgres 中搜索多维 jsonb 数据

javascript - 我将如何读取这样的 JSON 结构?

javascript - jQuery/Javascript 框架效率

Javascript/jQuery - 解析返回 'data' 作为 HTML 以供进一步选择?

jquery 空函数和事件处理程序

iphone - 哪个库用于 iOS 中本地存储的 JSON 文件?

jquery - 如何以编程方式按行中的值折叠或展开 Kendo Grid Group

javascript - 使用已加载脚本的功能