【问题标题】:Need help understanding this piece of code需要帮助理解这段代码
【发布时间】:2013-06-18 14:58:14
【问题描述】:

如果这是错误的地方发布此类内容,我提前道歉,但我们开始吧:

这是我目前在我的网站上实现的代码(感谢 charlietfl 提供此代码)

$(document).ready(function(){
    var url='http://query.yahooapis.com/v1/public/yql?q=select * from html where url=\'https://stackoverflow.com/\'and xpath=\'//div[@id="question-mini-list"]//h3//a\'&format=json&callback=?';    
    $.getJSON( url, function(data){
        $.each(data.query.results.a, function(){ 
            $('#stack').append('<td><a href="http://stackoverflow.com'+this.href +'">'+this.content+'</a></td>')           
        })
    })
});

我讨厌使用我不完全理解的代码,所以这是我的问题:

在查询的'var url'中,他使用@id="question-mini-list"。我查看了stackoverflow的html,并没有那个名字(我得到的最接近的是一个名为'question-hyperlink'的类),那么为什么会这样呢?

第二:在“每个”中,data.query.results.a 我没有看到“查询”或“结果”在其他任何地方使用,所以我怎么知道要使用它们?

最后一个问题:在你的 'url' 末尾为什么是 'callback=?' ?

非常感谢! :)

【问题讨论】:

  • 如果你做console.log(data),你可以看到query.results在哪里。

标签: jquery json yql


【解决方案1】:
  1. 如果您在 stackoverflow.com 查看源代码,您会看到:

    &lt;div id="question-mini-list"&gt;

    &lt;h3&gt;&lt;a href="/questions/...."&gt;...&lt;/a&gt;&lt;/h3&gt;

    ...

  2. YQL result JSON object 看起来像:

    { query: { results: { a: [ ... ] } } }

  3. 显然callback needs to be set 来获取 JSON 输出。

【讨论】:

    【解决方案2】:

    当您使用 Google 搜索某些内容时,您会惊讶地发现!

    我对 XPath 一无所知,但我注意到您询问的 @id 与 XPath 相关:

    xpath=\'//div[@id="question-mini-list"]
    

    我在 Google 上搜索了“XPath”并找到了一个页面,其中解释了 @id 是选择上下文节点的“id”属性的简写。

    现在,我碰巧对您问题中的下两点有所了解,但如果我不了解,我敢肯定 Google 会告诉我 .getJSON() 返回一个数据对象。从查询中,我可以推断出对象的结构是这样的:

    data: {
        query: {
            results: {
                a: // something
            }
        }
    }
    

    您可以提前知道要使用data.query.results.a,也可以使用控制台发现数据对象的结构。

    Google 还会向我指出有关解释问号语法的 JSON 回调的文档。

    【讨论】:

    • 首先感谢您的帮助! :) 然而,我已经在谷歌上搜索了很多关于这个的信息,而且我已经知道你写的关于 @id 的内容,但是就像我在我的问题中所写的那样:我在任何地方都没有找到名为“question-mini-list”的 id 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多