【问题标题】:Cannot export extra data from Freebase using Jquery无法使用 Jquery 从 Freebase 导出额外数据
【发布时间】:2011-12-25 15:29:48
【问题描述】:

一个新手问题,

我正在尝试使用Freebase Suggest 作为我的 Django 项目的标记资源。我想提取项目名称、类型和 ID。例如,正如您在screenshot 中看到的,我想提取名称“Pearl Jam”,其 id 为“/en/pearl_jam”,类型为“band”。

如何将这些数据发布到我的视图中?

使用下面的函数我只能创建到标签的链接。

$(function(){
   $("#myinput").suggest().bind("fb-select", function(e, data) {
     $('#myinput').val(''); // clear the input
     $('#returnValueOfFreebase').append('<a href="http://freebase.com/view'+ data.id +'">'+      data.name +'</a>  ')})
});

【问题讨论】:

    标签: javascript jquery django freebase


    【解决方案1】:

    您已经拥有来自data.namedata.id 的名称和ID。您还可以使用 data['n:type'].name 从回调函数中访问 notable type,如下所示:

    $(function(){
       $("#myinput").suggest().bind("fb-select", function(e, data) {
         $('#myinput').val(''); // clear the input
         $('#returnValueOfFreebase').append('<a href="http://freebase.com/view'+ data.id +'">'+ data.name +'</a> (' + data['n:type'].name + ')')})
    });
    

    如果您想捕获这些数据并将其发布回您的网络应用程序,您可以创建一些隐藏的输入并从 Freebase 建议回调中设置它们的值。像这样:

    <input id="notable_type" name="notable_type" type="hidden" />
    
    $("#myinput").suggest().bind("fb-select", function(e, data) {
        $("#notable_type").val(data['n:type'].id);
    });
    

    【讨论】:

    • Shawn 的回答会让您得到您所要求的,但请注意,Google 已弃用 ID,因此您可能应该改用 MID (/m/0d193h)。在这两种情况下,前导斜杠 (/) 都是 ID 的一部分。您可能还想存储显着类型的 mid/id 以及名称,因为这是引用它的规范方式。
    • @TomMorris 但有些对象有超过 1 个 MID,例如 java 编程语言。 "/m/07sbkfb" 等于 ID 和 "/m/04j38sw" 。为什么会这样?
    • 合并两个主题时,“获胜”主题会继承另一个主题的所有键/ID,但 GUID 除外,它是唯一的合成 ID。这允许存储任一原始密钥的应用程序继续工作,即使它们的“Java 编程语言”主题实例是失败的。
    【解决方案2】:

    新的 Api 使用 data['notable'] 代替 data['n:type']

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      相关资源
      最近更新 更多