使用freebase和jsonp自动完成

时间:2012-02-27 11:04:25

标签: jquery-ui jquery jquery-ui-autocomplete freebase

我正在尝试使用Jquery-ui自动完成的示例来使用Freebase。另外我正在使用tag-it插件...

这是我正在尝试但不起作用的地方:

$(function() {
    $("#tags").tagit({
        tagSource: function( request, response ) {
                        $.ajax({
                            url: "https://www.googleapis.com/freebase/v1/search",
                            dataType: "jsonp",
                            data: {
                                limit: 12,
                                name: request.term
                            },
                            success: function( data ) {
                                response( $.map( data.result, function( item ) {
                                    return {
                                        label: item.name,
                                        value: item.name
                                    }
                                }));
                            }
                        });
        }
    });
});

使用类似:https://www.googleapis.com/freebase/v1/search?query=ambrose%20b&indent=true

的内容

示例JSON

{
  "status": "200 OK",
  "result": [
    {
      "mid": "/m/0dkdnj6",
      "name": "Ambrose B. Rathborne",
      "notable": {
        "name": "Author",
        "id": "/book/author"
      },
      "lang": "en",
      "score": 71.059212
    },
    {
      "mid": "/m/0m17",
      "name": "Ambrose Bierce",
      "notable": {
        "name": "Journalist",
        "id": "/m/0d8qb"
      },
      "lang": "en",
      "score": 34.444187
    }.....

从有效的例子中可以看出:

$(function() {
    $("#tags").tagit({
        tagSource: function( request, response ) {
                        $.ajax({
                            url: "http://ws.geonames.org/searchJSON",
                            dataType: "jsonp",
                            data: {
                                featureClass: "P",
                                style: "full",
                                maxRows: 12,
                                name_startsWith: request.term
                            },
                            success: function( data ) {
                                response( $.map( data.geonames, function( item ) {
                                    return {
                                        label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                                        value: item.name
                                    }
                                }));
                            }
                        });
        }
    });
});

1 个答案:

答案 0 :(得分:2)

你几乎是对的。您的输入错误,请尝试:

$(function() {
    $("#tags").tagit({
        tagSource: function( request, response ) {
                        $.ajax({
                            url: "https://www.googleapis.com/freebase/v1/search",
                            dataType: "jsonp",
                            data: {
                                limit: 12,
                                query: request.term
                            },
                            success: function( data ) {
                                response( $.map( data.result, function( item ) {
                                    return {
                                        label: item.name,
                                        value: item.name
                                    }
                                }));
                            }
                        });
        }
    });
});