yql搞砸了检索到的内容

时间:2014-04-28 04:33:45

标签: javascript jquery cross-domain jsonp yql

我试图获取我的要点的原始内容,以便我可以显示。

以下是代码:

function requestCrossDomain(url, cb) {

    yql = "http://query.yahooapis.com/v1/public/yql?" +
          "q=" + encodeURIComponent('select * from html where url="' + url + '" ') +
          "&callback=?";

    $.getJSON(yql, function (data) {
        if(data.results[0]){
            console.log(data.results[0]);
        }
    });
}

requestCrossDomain("https://gist.githubusercontent.com/gongzhitaao/11357604/raw/7946d46c975337084b18ff1d59530acc59c9e010/index.html");

data.results[0]确实包含了一些东西,但却是垃圾。 <script></script>之间的代码由<p>分隔(在render函数中)???为什么?我哪里错了?

以下是jsfiddle ,您可以看到,此处只显示<script>之间的部分代码。

1 个答案:

答案 0 :(得分:1)

最后我解决了这个问题。它似乎是参数compat="html5"。默认的html规范是html4。此外,我还需要xpath参数来选择<header>内容以及<body>内容。希望以下代码对其他代码有所帮助:

function requestCrossDomain(url, cb) {

    yql = "http://query.yahooapis.com/v1/public/yql?" +
        "q=" +
        encodeURIComponent('select * from html where url="' + url + '" ') +
        encodeURIComponent('and compat="html5" and xpath="//html/head|//html/body"') +
        "&format=xml&callback=?";

    $.getJSON(yql, function (data) {
        if(data.results)
            cb(data.results);
    });
}