如何集成CORS、Google博客和JavaScript?

如何集成CORS、Google博客和JavaScript?,javascript,jquery,cors,blogs,Javascript,Jquery,Cors,Blogs,我在一个网页上有一个可用的JavaScript,从博客站点获取我的博客,并将其显示在我网页的侧栏中。换句话说,我在一个地方写博客,但也在另一个地方(我的网页)显示我的博客内容 该脚本使用跨源共享(CORS),如下所示: $( function () { $.get( 'http://www.corsproxy.com/my_name.soup.io/rss/original', function (data) { var items = data.ge

我在一个网页上有一个可用的JavaScript,
从博客站点获取我的博客,并将其显示在我网页的侧栏中。换句话说,我在一个地方写博客,但也在另一个地方(我的网页)显示我的博客内容

该脚本使用跨源共享(CORS),如下所示:

$(
  function () {
    $.get(
     'http://www.corsproxy.com/my_name.soup.io/rss/original',
     function (data) {
      var items = data.getElementsByTagName('item');
      var thoughts = $('#activity ul');
      var count = 0;
      $(items).each(function (i, e) {
        count++;
        if (count > 10) return;
        thoughts.append('<li>'
          + e.getElementsByTagName('description')[0].textContent
          + '<small>' 
          + $.timeago( new Date(e.getElementsByTagName('pubDate')[0].textContent) )
          + '</small></li>');
     });
    }, 'xml'
   );
  }
);
为什么Github
get
不使用CORS就可以工作

我是否可以重新配置Google博客的
get
,使其与我的Github帐户的
get
相同?

检查,我们看到:

“jsonp”
参数告诉jQuery这里正在使用jsonp,资源应该加载到
标记中,而不是使用Ajax获取。果然,我们实际上看的是一个剧本。因此,jQuery可以按照通常的方式执行JSONP脚本加载:

  • 将回调函数(即第二个参数)存储在具有随机长名称的变量中,如
    jQuery35758395
  • 用相同的值替换
    回调=?
    中的
    (例如
    jQuery35758395
  • 标记中加载脚本资源
Github资源(与任何传统的JSONP服务器端端点一样)设置为在脚本开头的函数调用中使用
回调
参数的值(例如,jQuery35758395({'some':'data'))。当脚本运行时,将执行函数调用,并触发我们在获取之前设置的随机命名回调

事实证明Blogger已经在其服务器上支持JSONP。如果您访问,您将看到封装在函数调用中的提要数据。要利用这一点,只需执行
$。使用
回调=?
参数获取

$.get(
     'http://my_name.blogspot.com/feeds/posts/default?callback=?',
     function (data) {
         ...
     },
     "jsonp");
这将在后台自动执行JSONP,并使用XML字符串正确调用回调函数。不幸的是,字符串不会被解析为DOM结构,但是
jQuery
函数(也称
$
)可以为您解析
数据
字符串:

var feedDOM = $(data).get(1);
get
调用将DOM结构从jQuery对象中拉出,但您也可以将其保留在jQuery对象中,并使用jQuery函数对其进行检查。或者,您可以将XML字符串作为jQuery选择器的上下文参数提供:

var authorTags = $("author", data);

TY-我明白了基本想法。你能再多走一步,建议如何使用Blogger脚本来代替“get”请求吗?换句话说,如何将CORS相关代码更改为Blogger JSONP代码。我是从Blogger代码中选择请求的字段,将其存储在服务器上,然后在JavaScript中调用它?还是将请求的字段传递给写博主代码(在foobar地址)然后在网站上显示数据?我不确定接下来要采取什么步骤。@JayGray我对答案的结尾做了一点扩展。另外,我最初忘记了添加“jsonp”
数据类型
的参数;如果没有该参数,它将无法工作!我还无法使其工作。我是否应该用更新的blogspot代码打开一个新问题?或者我应该在此处添加我的建议版本?@JayGray这取决于您的问题所在。如果您在制作
$时遇到问题。获取
获取任何内容,那么您应该请更新您的问题。如果您的
$.get
调用得到的结果不是您想要的结果(例如,您在使用XML字符串时遇到问题,但确实有XML字符串),则您应该打开一个新问题。如果您将
..
替换为
警报(数据),我的第二个代码块似乎工作正常
,例如,我预计您在使用结果时遇到问题,而不是获取结果(这是本问题的原始范围)。我将打开一个新问题并通知您。新问题将只包含blogspot问题和我对您建议的执行情况。我将花大约30分钟的时间来正确编写它。
var feedDOM = $(data).get(1);
var authorTags = $("author", data);